AssertThat( myString1 , is (myString2));
失败了。
所以我通过eclipse调试“变量”控制台检查了两个值。
myString1
hello
my name is
alex
myString2
hello\n my name is\n alex
如果我尝试使用String.compareTo,则失败。
我的问题是两个, 那些实际上是一样的吗? (控制台显示)? 2.如果没有,我如何从myString1转换为myString2?
答案 0 :(得分:2)
使用此import-- org.apache.commons.lang.StringEscapeUtils
{{1}}
可以作为您问题的提示
答案 1 :(得分:0)
1)不,他们显然不一样。
2)怎么样:
myString2 = myString1.replaceAll("\\n", "\\\\n");
或更好:
myString2 = myString1.replaceAll(System.getProperty("line.separator", "\\\\n");
无需使用外部包。
答案 2 :(得分:0)
这里要理解的关键是:我们可以不告诉您您的要求。
这很简单:如果a.equals(b)
返回true,则两个字符串对象仅相等。所以,显然,你的例子中的两个字符串是不相等。
但背后的问题是:它对您的生产代码是否重要;因此:你的测试代码应如何处理它?!
含义:您作为生产和测试代码的所有者,您必须了解您是否关心这些换行符。可以有很多选项来解决您的失败测试:
expected value
完全错了吗? 所以,是的,正确的答案可能是按下断言(或其预期值)以允许这样的\ n字符。但正确的答案也可能是修复损坏的生产代码"。当你使用assertThat时,你可能会为字符串编写自己的匹配器,而这些字符串会以某种方式忽略\ n字符;这将给予" true"对于你的示例字符串......
如上所述:有几种选择来修复"这个;但你必须了解哪一个确实解决了你的问题。