所以我查了一下this question并尝试了,但是没有成功。
我的代码应该通过使用Streams
读回该文本来测试该方法是否将文本正确输出到控制台上。
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
PrintStream myStream = new PrintStream(outStream);
System.setOut(myStream);
o.doSomething(); //printing out Hi
System.out.flush();
System.setOut(savedOldStream);//setting it back to System.out
assertEquals(outStream.toString(),"Hi");
但是每次我运行JUnit都会失败。
我也尝试过:
assertTrue(outStream.toString().equals("Hi"));
,但这也不起作用。这是doSomething()方法:
public void doSomething () {
System.out.println("Hi");
}
最佳答案
PrintStream#println(String str)
在字符串末尾添加换行符。因此,您的断言应精简其他行:
assertEquals(outStream.toString().trim(),"Hi");