Java assertEquals()失败的原因
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();
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获得平台换行符序列。