使用多个构造函数但没有getter方法对遗留代码进行单元测试

时间:2013-04-11 21:24:41

标签: java unit-testing constructor multiple-constructors

我正在尝试单元测试(在java中)一段代码,其中包含几个构造函数和一些带有逻辑的代码。因此,除了设置某些字段之外,构造函数可能会根据满足的某些条件影响某些静态对象。我想知道如果代码不提供任何getter方法并且字段是私有的,那么将如何测试这些。我也无权改变原始代码。我可以看到的一种方法是重复我为每个构造函数执行的每个测试,但似乎应该存在更好的解决方案。我在这个网站上看到了一些解决方案,还有其他一些解决方案用于多个构造函数的单元测试类,但我没有找到任何符合我情况的解决方案。

2 个答案:

答案 0 :(得分:2)

对其进行单元测试以确保对象在所有可能的输入中正确运行并始终处于一致的预期状态的目标。当正在开发类和模块时,它特别有价值。没有吸气剂应该没有区别。

在您的情况下,我建议在所有构造函数中抛出各种参数组合(正常值,疯狂值,空值,边缘情况等),并确保生成的对象按预期运行。按预期行事可能意味着正确运行,优雅地失败,或抛出适当的例外。

当然,对象除了构造函数之外还有一些方法,因此您应该在测试中包含这些方法。如果对象有任何副作用,您可以检查那些是否按预期发生。

最后,即使您无权更改代码,也许您可​​以通过添加一些额外的方法来扩展它,其唯一目的是促进单元测试。如果无变更规则是您组织的简单编码策略,那么确保添加旨在提高质量的方法就可以了。

另一方面,如果你真的无法改变代码,为什么还要打扰单元测试呢?如果您无法更改代码,则无法修复单元测试可能显示的任何错误。

答案 1 :(得分:0)

这些构造函数完成的所有工作都有一定的效果,对吧?所以测试它的效果。在那些静态对象上?检查那些。关于对象的后续行为?测试一下。