所以我抬头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");
}
答案 0 :(得分:4)
PrintStream#println(String str)
在字符串末尾添加换行符。因此,您的断言应该减少额外的行:
assertEquals(outStream.toString().trim(),"Hi");