jUnit测试不输出任何内容

时间:2019-03-31 21:45:11

标签: java eclipse junit

我是jUnit的新手,并且正在运行有关程序运行时输出的测试。

我的jUnit测试是:

class Tests {

    private final ByteArrayOutputStream outContent = new
            ByteArrayOutputStream();


    @BeforeEach
     public void setUpStreams() {
     System.setOut(new PrintStream(outContent));
     }

    @AfterEach
     public void cleanUpStreams() {
     System.setOut(null);
     }

     @Test
     public void Test1() {
     Mobile ios = new Mobile();
     ByteArrayInputStream inContent = new 
     ByteArrayInputStream("".getBytes());
     System.setIn(inContent);
     Mobile.main(new String[0]);
     System.setIn(System.in);
     assertNotEquals("Welcome!"+System.lineSeparator(),outContent.toString());
     }
}

我的程序的一部分是:

public class MobileApp {


    public static void main(String[] args) 
    {
        System.out.println("Welcome!");

}
}

我希望测试能够通过,因为输出应该是相同的。但是,运行测试后,测试失败,因为它表明实际上没有输出任何内容。我不确定为什么会这样,所以对您的帮助将不胜感激。 Result Comparison after run of test

1 个答案:

答案 0 :(得分:3)

我想这可能是由于PrintStream中的缓冲而发生的。例如,在构造true来解决问题时,您可以将PrintStream传递给autoFlush parameter,例如

 @BeforeEach
 public void setUpStreams() {
      System.setOut(new PrintStream(outContent, true));
 }