所以我查了一下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");

10-08 10:56