我是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
答案 0 :(得分:3)
我想这可能是由于PrintStream
中的缓冲而发生的。例如,在构造true
来解决问题时,您可以将PrintStream
传递给autoFlush parameter,例如
@BeforeEach
public void setUpStreams() {
System.setOut(new PrintStream(outContent, true));
}