只有简单的getter和setter的简单JavaBeans应该进行单元测试吗?
Beans在getter和setter中有一些逻辑怎么样?
答案 0 :(得分:22)
你不应该写下以下的测试:
同样适用于仅具有属性的.NET对象(有时称为“Info”对象)。
在一个理想的世界中,你将有100%的测试覆盖率,但实际上这不会发生。因此,花费客户的钱来增加最大的收益,即为具有复杂状态和行为的类编写测试。
如果您的JavaBean变得更有趣,您当然可以在以后添加测试用例。与单元测试/ TDD相关的一个常见问题是错误地认为一切都必须是第一次完美。
答案 1 :(得分:6)
如果不值得测试,那就不值得写了。
这并不总是意味着你应该写测试。有时它意味着你应该删除代码。你需要这些豆子吗?他们真的做了什么重要的事吗?如果您需要它们,您应该编写测试。如果没有,删除代码并过上更幸福的生活,因为你知道自己维护的次数较少。
答案 2 :(得分:4)
我认为这是每个人都问自己(自己)的问题之一。
但请考虑一下:访问器的内部逻辑现在很简单,但它可能会在将来发生变化,而且 - 更重要的是 - 如果你有测试,你可以自由地将它改为你想要的任何东西。方法。因此,您可以通过几个测试用例获得自由和自信。听起来很划算,是吗?
答案 3 :(得分:3)
如何安全地重构未经测试的代码?如果没有测试,当你的bean pojo改变时会发生什么?您是在创建Anemic Domain Model吗?
答案 4 :(得分:3)
另一个经验法则(类似于其他人所说的)是“测试任何可能破坏的东西”。对我来说,不包括自动生成的getter和setter,但包括手写的包含一些逻辑的。* / p>
答案 5 :(得分:2)
您只需要测试您想要正常工作的内容。
(对不起我偷了那句话的人)
答案 6 :(得分:2)
你应该测试有意义的东西。 getter和setter通常不包含任何逻辑,仅在Java中用于缺少属性。我认为测试它们就像检查Java每次评估“a.x”时确实返回一个值一样愚蠢。
如果访问者确实有逻辑,则由您决定阈值。如果你的团队很懒散。最好测试所有逻辑。如果它更有纪律,最好找一个不会让你写太多样板测试的比例。
答案 7 :(得分:1)
如果它只是一个getter / setter而没有改变任何值,我会说没有必要进行测试。如果它确实做了一些逻辑,一些简单的单元测试将提供一些安全性。
答案 8 :(得分:1)
与Maxim已经说过:测试不会为您的应用程序添加额外的功能,但可以让您更自信地进行更改。为了确定哪些类/方法可以进行单元测试,我总是问自己两个问题:
如果两个问题的答案都是肯定的,则需要进行单元测试。
答案 9 :(得分:1)
在我看来,编写单元测试的目的是测试测试单元的业务逻辑。因此,如果没有业务逻辑(例如,当getter只返回一个值或者setter设置它时),则编写测试没有意义。但是,如果有一些逻辑(getter在返回之前以某种方式更改数据)那么是的,你应该进行单元测试。 作为一般规则,我认为不应该为不包含任何业务逻辑的bean编写测试。
答案 10 :(得分:1)
如果它有一个外部接口并且包含一个人写的代码(而不是由IDE或编译器自动生成),那么它肯定应该被测试。
如果这些条件中的一个或两个都不成立,那么它就是一个灰色区域,并且更多的是“腰带和吊带”类型的问题,即你觉得需要多么小心。