JUnit assertEquals更改字符串

时间:2011-09-09 20:04:58

标签: 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_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:]"?感谢帮助。

3 个答案:

答案 0 :(得分:11)

方括号强调了期望字符串和实际字符串之间的区别。

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

答案 1 :(得分:3)

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

正如本问题(Java: Is assertEquals(String, String) reliable?)中所述,assertEquals只是在传递它的对象上调用.equals方法。

答案 2 :(得分:0)

要删除方括号,应使实际字符串与预期结果兼容。为此,您需要删除多余的空间或换行距方括号更近的行距。