Java JUnit assertEquals更改字符串

Java JUnit assertEquals更改字符串,java,junit,Java,Junit,我有一个JUnit测试,如下所示: @Test public void testToDatabaseString() { DateConvertor convertor = new DateConvertor(); Date date = convertor.convert("20/07/1984:00:00:00:00"); String convertedDate = convertor.toDatabaseString(date); assertEquals("to_da

我有一个JUnit测试,如下所示:

@Test
public void testToDatabaseString() {
  DateConvertor convertor = new DateConvertor();
  Date date = convertor.convert("20/07/1984:00:00:00:00");
  String convertedDate = convertor.toDatabaseString(date);

  assertEquals("to_date('20/07/1984:00:00:00:00', 'DD/MM/YYYY HH24:MI:SS')",convertedDate);
}
测试失败,说明:

org.junit.ComparisonFailure: expected:<to_date('20/07/1984[00:]00:00:00', 'DD/MM/YY...> but was:<to_date('20/07/1984[ ]00:00:00', 'DD/MM/YY...>
org.junit.ComparisonFailure:应为:
特别令人感兴趣的是,为什么预期值是:

截止日期('20/07/1984[00:]00:00:00',等)

当我在测试中的字符串文字明显为:

截止日期('20/07/1984:00:00:00'),等


有人能解释一下吗?为什么要添加
“[00:”
?感谢您的帮助。

方括号强调了预期字符串和实际字符串之间的差异


JUnit将方括号括在
:00
周围,以强调这是预期字符串中的内容,而不是实际字符串中的内容。出于同样的原因,实际字符串中的空格周围也有方括号。

JUnit只是将字符串中不相等的字符放在括号中,以便于阅读。断言查找4组“:00”,而变量只有3组


如本问题所述(),assertEquals只对传递给它的对象调用.equals方法。

若要删除方括号,应使实际字符串与预期结果兼容。为此,您需要删除更接近方括号的额外空格或新行空格。

@Luke Woodward,Jon7谢谢各位,我之前就知道了e你们发布了。但希望这个问题能在将来帮助别人。这是一个非常令人惊讶(困惑)的行为。这也发生在Android Studio的单元测试中。