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

Nha*_*nne 3 java junit outputstream

所以我查了这个问题并尝试过,但没有成功。

我的代码应该测试该方法是否通过使用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");
Run Code Online (Sandbox Code Playgroud)

但是每次我运行 JUnit 时它都会失败。我也试过:assertTrue(outStream.toString().equals("Hi"));但这也不起作用。

这是 doSomething() 方法:

public void doSomething () {
    System.out.println("Hi");
}
Run Code Online (Sandbox Code Playgroud)

man*_*uti 8

PrintStream#println(String str)在字符串的末尾附加一个换行符。因此,您的断言应该减少附加行:

assertEquals(outStream.toString().trim(),"Hi");
Run Code Online (Sandbox Code Playgroud)