有在Java中一个著名的辩论(和其他社区,我敢肯定)微不足道的getter / setter方法是否应该进行测试。 通常,这是相对于代码覆盖。 我们认为,这是一个公开辩论,而不是试图在这里回答。
已经有使用Java反射来自动测试这种方法的几个博客帖子。
有没有任何框架(如JUnit的)提供了这样的功能? 例如,上面写着一个注解“这个测试T应当自动测试所有的getter /上C类制定者,因为我认为他们是标准的”。
在我看来,这将增加价值,如果它是可配置的,在“辩论”将留待作为一个选项给用户。
Unitils做到这一点瓦特/静态方法assertRefEquals
。
我不知道这是否任何现成的库或类的。 这可能主要是因为我不在乎,因为我上的强烈反对这种试验的一侧。 因此,即使你要求必须有一点理由这一观点:
我怀疑,自动测试的getter和setter利于你的代码质量或您的覆盖面:这两种方法都是从其他代码中使用(和测试在那里,例如100%覆盖),或根本不使用(而且可以去掉)。 在最后,你会在应用程序中留下的getter和setter,因为它们从测试使用,但其他地方。
它应该很容易写这样的测试,例如与Apache共享BeanUtils的,但我怀疑你真的需要它,如果你有很好的测试,否则。
在大多数情况下,setter和getter做多,因为只有设置和获取内场。 一个对象有检查,它仅持有有效值内部规则。 例如
- 是空值可能吗?
- 是空字符串可能吗?
- 或负值?
- 或零值?
- 或从列表中值是有效的?
- 或者是有一个最大的价值?
- 或者是有上的BigDecimal值最大精度?
单元测试应该检查是否正确的行为,如果有无效值。 这不能自动化。
如果您对二传手没有逻辑和getter那么它必须在应用程序中的任何地方使用。 写一个测试,你的对象是一个更复杂的测试参数。 您可以从列表中不同的值进行测试即可。
测试你的业务逻辑,而不是getter和setter。 也结果应该getter和setter的覆盖。 该方法应该是什么结果在你的业务逻辑,如果你还只有一个公共图书馆。 如果getter和setter没有代码覆盖率,然后删除它。
我已经做了类似的东西。 一个简单的Java类,带有一个对象和测试所有getter和setter方法。 http://sourceforge.net/projects/getterandsetter/
我认为你应该避免getter和setter方法尽可能的,但只要他们身边,它需要两条线,以测试他们来说,这是一个很好的事情去做。
我赞成OO设计了代码覆盖,看能不能将这些字段需要它们的类。 因此,我想试试,看看是否这些getter和setter方法可以移除之前建议。 getter和setter被破坏了封装 。
我想这个库是回答你的问题
它测试bean的所有初始值的setters
,在getters
, hashCode(), equals() and toString()
所有你需要做的就是定义地图默认和非默认属性/值。
它还可以测试是豆额外的非默认的构造函数的对象。
回答在以前的评论@me这里是因为我的名气:
Vlookward,不写getter / setter方法是没有意义的。 设置私人领域唯一的选择是有明确的制定者,将它们设置在你的构造函数,或设置间接通过其他方法(功能推迟二传手到另一个地方)。 为什么不使用setter方法?
嗯,有时候,没有必要到外地是私有的(如果我的英语是对不起不是很好)。 通常情况下,我们写的软件,因为它是一个图书馆,我们封装了不必要的getter / setter方法领域(我们的业务逻辑域)。
其他时候,该方法实际上是必要的。 然后,有两种可能性:
1.里面有他们的业务逻辑。 然后,他们将前人的精力进行测试,但它们不是真正的getter / setter方法。 我总是写在其它类逻辑。 并且测试测试其他类,而不是POJO。
2.没有。 然后,不要用手,如果你能写出来。 例如,对于下一个接口的实现可完全自动生成(也是在运行!):
interface NamedAndObservable {
String getName();
void setName(String name);
void addPropertyChangeListener(PropertyChangeListener listener);
void addPropertyChangeListener(String propertyName,
PropertyChangeListener listener);
}
因此只测试什么是手写的。 不管它是一个getter / setter方法。
我不写测试用例为每个属性,而是使用反射/内省确定类型(一个或多个)测试所有的设置器/吸气剂在单个测试用例。 这里是显示这个伟大的资源:
http://www.nearinfinity.com/blogs/scott_leberknight/do_you_unit_test_getters.html
文章来源: Is there a Java unit-test framework that auto-tests getters and setters? [closed]