Java assertEquals()失败的原因

Java assertEquals()失败的原因,java,junit,Java,Junit,assertEquals()即使两个字符串的长度相同也会失败…有人能帮我找出原因吗 public void testSet() { ByteArrayOutputStream outContent = new ByteArrayOutputStream(); System.setOut(new PrintStream(outContent)); instance.get(); String output = outContent.toString();

assertEquals()即使两个字符串的长度相同也会失败…有人能帮我找出原因吗

 public void testSet() 
 {
    ByteArrayOutputStream outContent = new ByteArrayOutputStream();

    System.setOut(new PrintStream(outContent));

    instance.get();

    String output = outContent.toString();
    String input="i=1\r\n";
    assertEquals(input,output);
 }

 get()
 {
    int i=1;
    System.out.println("i="+i);
 }

在输出缓冲区中追加
\r\n
get()
方法的print语句中使用了
newline
。这样,您将得到'output=“i=1\r\n”,它不等于“i=1”

使用不带换行符的
打印,即print()
,如下所示:

 System.out.print("i="+i);
    String output = outContent.toString();
    output = output.replaceAll("\r\n", "");
    String input="i=1";
    assertEquals(input,output);
如果不想使用
print()
方法,请按如下方式从输出中截断
\r\n

 System.out.print("i="+i);
    String output = outContent.toString();
    output = output.replaceAll("\r\n", "");
    String input="i=1";
    assertEquals(input,output);

在输出缓冲区中追加
\r\n
get()
方法的print语句中使用了
newline
。这样,您将得到'output=“i=1\r\n”,它不等于“i=1”

使用不带换行符的
打印,即print()
,如下所示:

 System.out.print("i="+i);
    String output = outContent.toString();
    output = output.replaceAll("\r\n", "");
    String input="i=1";
    assertEquals(input,output);
如果不想使用
print()
方法,请按如下方式从输出中截断
\r\n

 System.out.print("i="+i);
    String output = outContent.toString();
    output = output.replaceAll("\r\n", "");
    String input="i=1";
    assertEquals(input,output);

println
添加了一个
'\n'
,我想。检查
output.length()
@DanielFischer我尝试将“\n”添加到input still assertEquals()失败。现在输入.length()=4,输出.length=5…但我不明白为什么会发生这种情况的原因。您是在Windows上吗?那么您可能需要
“\r\n”
。或者,最好使用
print
而不是
println
,这样它就应该独立于平台工作。@DanielFischer你在windows上,我想让它独立于平台……我也想使用println……有什么办法吗?
println
添加了一个
'\n'
,我想。检查
output.length()
@DanielFischer我尝试将“\n”添加到input still assertEquals()失败。现在输入.length()=4,输出.length=5…但我不明白为什么会发生这种情况的原因。您是在Windows上吗?那么您可能需要
“\r\n”
。或者,最好使用
print
而不是
println
,这样它就应该独立于平台工作。@DanielFischer你在windows上,我想让它独立于平台…我也想使用println…有什么办法吗?但是我想使用System.out.println()有什么办法吗through@user1778824:是的,截断它。在答案中添加了一个示例代码。@user1778824,因此在测试之前,请从字符串中删除换行符,或者在测试中包含换行符序列。您可以从java.lang.System获取平台换行符序列,但我想使用System.out.println()有什么方法可以获取through@user1778824:是,截断它。在答案中添加了一个示例代码。@user1778824,因此在测试之前,请从字符串中删除换行符,或者在测试中包含换行符序列。您可以从java.lang.System获得平台换行符序列。