我有一个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...>
特别感兴趣的是为什么期望值是:
to_date('20/07/1984[00:]00:00:00',
等......
当我的测试中的字符串文字显然是:
"to_date('20/07/1984:00:00:00:00',
等......
任何人都能解释一下吗?为什么要添加"[00:]"
?感谢帮助。
答案 0 :(得分:11)
方括号强调了期望字符串和实际字符串之间的区别。
JUnit将方括号放在:00
周围,以强调这是预期字符串中的内容,而不是实际字符串中的内容。由于同样的原因,实际字符串中的空格周围有方括号。
答案 1 :(得分:3)
JUnit只是将字符串中的字符放在括号中不相等,以便于阅读。你的断言查找4组“:00”,你的变量只有3组。
正如本问题(Java: Is assertEquals(String, String) reliable?)中所述,assertEquals只是在传递它的对象上调用.equals方法。
答案 2 :(得分:0)
要删除方括号,应使实际字符串与预期结果兼容。为此,您需要删除多余的空间或换行距方括号更近的行距。