Второй класс не сбрасывается при тестировании из другого класса

#java #testing

#java #тестирование

Вопрос:

У меня есть класс («TestProject»), который должен выводить выходные данные другого класса на консоль, каждый раз используя другой входной текстовый файл (например, «input01.txt «, «input02.txt «).

 import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.PrintStream;

public class TestProject {
    public static void main(String[] args) throws IOException {
        for(int inputNumber = 2; inputNumber <= 7; inputNumber  ) {

            String[] arguments = new String[] {"input"   String.format("d", inputNumber)   ".txt", "1"};
            
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            PrintStream newPS = new PrintStream(baos);
            PrintStream oldPS = System.out;
            
            System.setOut(newPS);
            
            Project.main(arguments);
            
            System.out.flush();
            System.setOut(oldPS);
            
            newPS.close();
            
            System.out.println(baos.toString());
        }
    }
}
  

Это работает правильно для первого входного файла, как показано ниже:

 arguments:  "input02.txt" 0
1, 3, 80.5, 20, 60, 0, Stone, 0, 0
2, 3, 80.5, 20, 60, 0, Flame, 2, 2

1, 4, 80.0, 20, 60, 0, Stone, 0, 1
2, 4, 80.0, 20, 60, 0, Flame, 2, 2

1, 5, 79.5, 20, 60, 0, Stone, 0, 2
2, 5, 79.5, 20, 60, 0, Flame, 2, 2

1, 6, 79.0, 20, 60, 0, Stone, 1, 1
2, 6, 79.0, 20, 60, 0, Flame, 2, 2

  

Но после этого каждый последующий тест печатает только конечный результат первого теста:

 arguments:  "input03.txt" 0
1, 6, 79.0, 20, 60, 0, Stone, 1, 1
2, 6, 79.0, 20, 60, 0, Flame, 2, 2


arguments:  "input04.txt" 0
1, 6, 79.0, 20, 60, 0, Stone, 1, 1
2, 6, 79.0, 20, 60, 0, Flame, 2, 2


arguments:  "input05.txt" 0
1, 6, 79.0, 20, 60, 0, Stone, 1, 1
2, 6, 79.0, 20, 60, 0, Flame, 2, 2


arguments:  "input06.txt" 0
1, 6, 79.0, 20, 60, 0, Stone, 1, 1
2, 6, 79.0, 20, 60, 0, Flame, 2, 2


arguments:  "input07.txt" 0
1, 6, 79.0, 20, 60, 0, Stone, 1, 1
2, 6, 79.0, 20, 60, 0, Flame, 2, 2
  

Я подумал, что это может иметь какое-то отношение main() к многократному вызову метода другого класса, но ничто в Интернете, похоже, не указывает на то, что это проблема.

При отдельном запуске основной программы вывод работает нормально для всех входных файлов. Это наводит меня на мысль, что проблема существует в этом коротком отрывке.

Заранее спасибо всем.

Комментарии:

1. Это может быть связано с тем, как работает ваш класс Project, нам нужно будет посмотреть, что он делает, чтобы иметь возможность помочь вам

2. Я могу включить in в вопрос, но я боюсь, что это сделает вопрос немного длиннее. Но если здесь нет очевидных проблем, по крайней мере, у меня есть направление (основной проект). Спасибо за помощь.