1

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

4

2 回答 2

2

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

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

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

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

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

于 2013-04-11T21:37:46.250 回答
0

这些构造函数所做的所有工作都会产生一些影响,对吗?所以测试它的效果。在那些静态物体上?检查那些。关于对象的后续行为?测试一下。

于 2013-04-11T21:40:00.597 回答