单元测试属性是一种好的做法吗?

时间:2010-12-14 11:17:51

标签: unit-testing

我仍然在掌握整个TDD概念。我应该为房产编写测试吗?是否只应对包含足够逻辑的属性进行测试?任何关于此的想法或例子都会很棒。

6 个答案:

答案 0 :(得分:4)

测试有合理机会失败的事情 - 通过测试没有get / set之外的逻辑的属性,你不会获得额外的信心。

答案 1 :(得分:4)

如果此getter除了返回私有字段之外什么都不做,那么为私有字段的公共getter编写测试不会给你太多。但如果它确实包含某些逻辑(或者只是某些可能失败的东西,比如将您的私有Int32字段转换为Byte),那么测试这样的属性就会开始变得有意义。

答案 2 :(得分:4)

我在做TDD时使用的简单经验法则:总是编写失败的测试。

如果测试最初失败,那么对TDD来说是一个很好的测试。这意味着某些东西尚未实现,或者未实现。然后,您可以更改代码以使其通过。首先成功的测试是一个糟糕的测试。您甚至不知道它是否成功,因为您在编写测试时犯了一些错误,或者因为您正在测试的内容已经在运行。

如果能够使用属性生成测试失败,则为这些属性编写测试。通常,您应该在实现之前编写测试setter或getter的测试。未实现的setter或getter看起来微不足道,但会使测试失败。如果测试失败不是驱动,为什么你会编写任何代码行甚至是setter或getter?

其他类型的测试,例如测试作为显示如何使用API​​的文档也非常有用,并且具有良好的敏捷实践,但这不是TDD。 TDD是关于尝试主动来破解代码,直到你不能再这样做了。然后你运行功能测试,如果你推动了单元测试,并且如果没有一些集成或系统问题,那么一切都应该没问题。

答案 3 :(得分:2)

我经常为访问者编写junit测试。除非保持覆盖率统计,否则在写入时不会增加太多。但是如果有人在生产代码中添加了“足够的逻辑”,那么测试就已经到位,以便发现任何错误。

编写测试来检查getter返回的值也是时候的工作。

答案 4 :(得分:1)

不要将它们视为测试,而应将每个测试视为某人如何使用您的代码的示例。

不仅要测试属性,还要考虑当属性具有不同值时更改的行为,并举例说明每个有意义的上下文中类的行为。

如果它只是一个数据属性,您可以通过检查,自动验收测试或手动测试,也可以通过测试人员的帮助。否则,不要担心测试每个方法或每个属性 - 只显示如何使用代码以及您希望它如何表现。

答案 5 :(得分:0)

将TDD和单元测试视为一种“向前看”的方式,您可以以您认为最适合您的公共签名的方式编写测试。