此类测试是否有充分的理由存在?
答案 0 :(得分:24)
有些类使用toString
不仅仅是用户可读的信息字符串。示例包括StringBuilder
和StringWriter
。在这种情况下,当然可以像其他任何商业价值方法一样测试方法。
即使在一般情况下,优良的做法是对可靠性进行抽烟测试toString
(不会抛出异常)。您需要的最后一件事是由于执行不当toString
而导致代码爆炸的日志声明。它发生在我身上好几次,由此产生的错误是最糟糕的,因为你甚至没有在源代码中看到toString
调用 - 它隐含在日志语句中。
答案 1 :(得分:4)
问题不是我应该测试toString(),但是你关心toString()的结果吗?是用于某事吗?如果是,那么是的,测试一下。
如果方法被用于真实的东西,那么测试它。
答案 2 :(得分:3)
明显的答案是“不,这只是浪费时间”。但对于许多类,首先是值包装器,toString应该重载并提供更多信息,只需org.package.ClassName@2be2befa
所以我对toString的propostal测试是:
@Test
public final void testToString() {
assertFalse(new MyClass().toString().contains("@"));
}
它还增加了至少不坏的测试覆盖率。
答案 3 :(得分:0)
如果方法的结果对您很重要,您应该对其进行测试,否则您可以忽略它。
答案 4 :(得分:0)
我将违背一般建议,并说测试toString方法肯定有它的位置。我在日志上工作的应用程序很多,尤其是当您打开调试或跟踪级别的日志时。如果我依靠日志来帮助识别错误,并且由于某些开发人员忘记了重新生成toString方法而导致我的POJO中的某些字段不存在,那么这将是一个巨大的挫折!
问题在于toString方法是绝对痛苦的测试,因为它们不是固定格式,也不是明确的测试方法。我建议您不要自己编写测试,而应使用ToStringVerifier
之类的库@Test
public void testToString()
{
ToStringVerifier.forClass(User.class).verify();
}