JUnit 断言两个字符串是否相等

JUnit asserting two Strings whether they're equal or not

所以我查阅了 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) 在字符串末尾附加一个换行符。因此,您的断言应该 trim 添加一行:

assertEquals(outStream.toString().trim(),"Hi");