3

在编写 junit 测试时,我不禁认为 junit 测试适用于具有执行大量业务逻辑的方法的类。这样你就可以编写测试条件来测试每个 if-else 块。

但是在一个拥有大量 java bean 的企业应用程序中,为什么 junit 需要针对这些运行呢?为不执行任何逻辑或计算的标准 getter/setter 编写测试用例似乎是多余的。

junit 不应该只用于具有业务逻辑的类而不是简单的 POJO 吗?

4

2 回答 2

3

POJO 并不意味着“没有业务逻辑的类”,它意味着该类不依赖于基础设施或框架。(一些使用 POJO 的框架,如 Hibernate 和 Spring,鼓励他们的用户使他们的 POJO 符合一些 JavaBean 约定,主要是命名 getter 和 setter。) Spring 中的服务是 POJO(或接近 POJO,有些人可能认为注解的引入离 POJO 的纯洁性差了一步),并且它们具有业务逻辑。

如果一个类不包含任何逻辑,那么测试它就没有价值。通常,这些类会被执行实际功能的测试所覆盖,因为它们用于保存传入或传出业务逻辑代码的数据。

如果您真的必须为只有 getter 和 setter 的类编写测试,请考虑编写一些代码来为您生成这些无用的测试。

于 2013-10-08T18:14:38.873 回答
1

仅供参考,我在 GitHub 上创建了一个框架,用于自动测试 getter/setter。

它以两种方式工作,您可以调用一个方法来测试特定字段,或者使用一组默认值或使用您自己的值。或者您可以通过调用并让框架测试通过反射找到的所有字段。

GetterSetterTester测试单个字段。

ReflectionGetterSetterTester测试一个类中的所有字段。

于 2013-10-09T10:44:45.960 回答