在编写junit测试时,我不禁认为junit测试适用于具有执行大量业务逻辑的方法的类。这样你就可以编写测试条件来测试每个if-else块。
但是在一个拥有大量java bean的企业应用程序中,为什么junit需要针对那些?为不执行任何逻辑或计算的标准getter / setter编写测试用例似乎是多余的。
junit不仅适用于具有业务逻辑且不是普通POJO的类吗?
答案 0 :(得分:3)
POJO并不意味着“没有业务逻辑的类”,这意味着该类不依赖于基础结构或框架。 (一些使用POJO的框架,比如Hibernate和Spring,鼓励他们的用户使他们的POJO符合一些JavaBean约定,主要是getter和setter的命名。)Spring中的服务是POJO(或者接近POJO,有些人可能会认为注释的引入是远离POJO纯度的一步,并且它们具有业务逻辑。
如果一个类不包含任何逻辑,则没有值测试它。通常,这些类会被执行实际功能的测试所覆盖,因为它们用于保存传入或传出业务逻辑代码的数据。
如果你真的必须为只有getter和setter的类编写测试,可以考虑编写一些代码来为你生成这些无用的测试。
答案 1 :(得分:1)
仅供参考,我已经在GitHub上发布了一个框架,用于自动测试getter / setter。
它以两种方式工作,您可以调用方法来测试特定字段,使用默认值集或使用您自己的值。或者你可以传递一个调用并让框架测试通过反射找到的所有字段。
GetterSetterTester测试单个字段。
ReflectionGetterSetterTester测试班级中的所有字段。