Java bean测试框架

问题描述 投票:4回答:6

是否有可用的框架或库,当给定JavaBean时,将“完成它的步伐”,即测试所有的getter和setter,验证属性是否与getter和setter匹配等等?

java unit-testing javabeans
6个回答
8
投票

就个人而言,我认为这不是测试中最困难的部分。通过反射可以做到,但这并不是让测试变得有价值的原因。

困难的部分是找出所有可能的输入,“快乐的路径”和错误的情况,确保异常被抛出,等等。

您的Java Bean应该实现equals和hashCode。我更担心检查等于合同的测试:null等于,自反,对称,传递,而不是等于。这些都不是微不足道的。

吸气剂和二传手是你遇到的最少的问题。当人们谈论70%或更高的代码覆盖率标准时,他们经常说可以省去吸气剂和制定者。


5
投票

虽然我同意要解决更大的问题,但有些情况可以用来测试Java bean方法。从事大型代码库的大型团队可能会遇到问题。我见过几个复制/粘贴错误导致getter或setter处理错误属性的情况。忘记会导致hashCode和equals方法变得不一致。在这个简单的代码中查找错误可能非常令人沮丧。

Bean Matchers是一个可以在这方面提供帮助的图书馆。它提供了一系列Hamcrest匹配器,用于反射测试Java bean。例如:

@Test
public void testBean() {
    assertThat(MyBean.class, allOf(
            hasValidBeanConstructor(),
            hasValidGettersAndSetters(),
            hasValidBeanHashCode(),
            hasValidBeanEquals(),
            hasValidBeanToString()
    ));
}

2
投票

看一下Reflection Test Utilities:

http://code.google.com/p/rtu/

虽然如果你正在测试生成的方法(基于类中的字段),它可能不值得。


1
投票

如果你看起来不像http://commons.apache.org/validator/那样更像花哨,我会建议你自己写。就个人而言,我不喜欢没有任何行为的纯数据保持对象 - 它不是很好的设计。因此,如果我没有被迫使用这些对象(通过使用j2ee f。),我会试图摆脱它们。


1
投票

您可以尝试使用http://oval.sourceforge.net/ Oval,它允许您在bean上使用注释,然后执行validate方法。它不完全符合JSR303标准。如果你想使用完全兼容的东西,你应该看看Hibernate Validator。

就像上面的帖子一样,肯定会查看apache commons验证器。


0
投票

我想这个库是你问题的答案:http://outsidemybox.github.com/testUtils/

它测试所有bean的初始值,setter,getter,hashCode(),equals()和toString()。您所要做的就是定义默认和非默认属性/值的映射。

它还可以测试具有其他非默认构造函数的bean对象。

© www.soinside.com 2019 - 2024. All rights reserved.