JUnit for getters and setters

时间:2010-10-26 18:36:05

标签: java junit

正如我正在阅读的其中一本书中强烈推荐的那样,我已经开始为我正在创作的每个课程编写测试。我不确定什么是一个很好的做法,涵盖了不知名者和吸气者。如果是,我不确定如何验证setter方法,你需要为这个变量调用getter,反之亦然。所以你永远不会知道实际问题在哪里。 我去的地方就是对二传手和吸气者的类似测试。

5 个答案:

答案 0 :(得分:2)

如果您练习TDD(测试驱动设计),只有在您需要时才会出现设置器和获取器 - 您不仅可以自动创建它们“以防万一”。在这种情况下,对于较不基本的方法,通常会在已经失败的测试过程中出现对访问器的需求。这意味着您的访问者将被测试,而不是通过特定的测试,但是在测试更广泛的方法的过程中。那更好;创建访问器“以防万一”是愚蠢的,并且愚蠢地为那些尽可能简单的方法编写测试。但让测试覆盖它们真是太好了。

答案 1 :(得分:1)

如果你的getter和setter只是简单地获取和设置一个支持变量,那么为它们编写单元测试并没有提供太多的价值,因为你实际上是在测试语言和编译器正在做他们应该做的事情。

重点关注测试该行为是否按预期工作。如果设置属性A,这意味着属性B现在应该具有不同的值,那么可能值得进行单元测试。

答案 2 :(得分:1)

如果你关心覆盖率指标,那么setter和getter可以杀死你。

无论如何,你一定要测试它们,特别是如果它们不仅仅是设置或获得它们。

另外,可以在一次测试中测试set / get。如果道具是私人的,那么你必须这样做,除非有一套副作用。或者,您可以在测试其他方法时隐式测试它们。例如,如果您正在测试DAO,那么在编写testSave方法时可以使用setter和getter ...

为了让生活更轻松,您可以编写基于反射的测试实用程序来测试setter和getter。或者只是编写简单的测试,虽然它很无聊但不是很难或耗费时间......

这里有很多选择...

答案 3 :(得分:1)

测试驱动开发的理念是“测试一切可能会破坏的东西”。

Getters和setter对于代码来说是微不足道的,并且通常由IDE为您生成。希望IDE的开发人员已经测试过该代码,因此您不必这样做。我唯一不愿意测试吸气剂的情况是,如果他们做的不仅仅是设置/获取。

为您的业务逻辑编写测试,而不是为了编写测试而进行测试。

答案 4 :(得分:0)

编写单元测试的一般准则是测试类包含逻辑。
即使你有委托逻辑(业务层调用dao层),我也建议为它编写测试。

对于值对象(或POJO),您可以避免单元测试。

但是,如果你想测试那些物体 - 请使用反射 您可以使用反射设置一个字段,并查看getter返回的内容。您可以使用setter设置字段,然后再次使用反射检查值。