2010-10-26 98 views
1

由于这是强烈推荐的,我读书,我已经开始写测试,每个我创建的类的书籍之一。我不确定什么是一个好的做法来覆盖制定者和获得者。如果是的话,我不知道该如何验证setter方法,因此需要调用此变量的getter,反之亦然。所以你永远不会知道实际问题在哪里。 我去过的地方就是对制定者和获得者的类似测试。的JUnit getter和setter

回答

1

如果您关心的是覆盖范围指标,那么设置者和获取者可能会让您失望。无论是

,你一定要对其进行测试,特别是如果他们做的比设置或获取更多。

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

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

有很多的选择在这里...

+1

测试只是为了实现高覆盖率的指标就像是获得每行代码的支付.. imho ... – 2010-10-26 18:51:05

+0

@alexander我没说你应该测试指标。我说setter/getters可以杀死指标。我在上面澄清。 – hvgotcodes 2010-10-26 18:52:18

1

如果你的getter和setter方法只是获取和设置支持变量,然后编写单元测试对他们来说并没有提供多少价值,你基本上测试的语言和编译器在做什么,他们应该。

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

0

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

至于值对象(PO​​JO的或该事项),你能避免单元测试。

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

1

测试驱动开发的哲学说“测试所有可能会破坏的东西”。

getter和setter方法是微不足道的代码,并为你您IDE经常产生。希望IDE的开发人员已经测试过该代码,因此您不必这样做。唯一的情况是我会打扰测试getter的是,如果他们做的不仅仅是set/get。

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

+3

...如果他们“不仅仅是设置/获得”,他们并不是真正的最严格意义上的制定者/获取者。使用只有raw访问器具有这些名称的代码才更容易;你可以看看这个名字,并知道,“这只不过是设置/获得”。 – 2010-10-26 18:46:53

+0

好点卡尔 – willcodejavaforfood 2010-10-26 18:48:11

2

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