Pau*_*rer 4 java unit-testing javabeans
是否有可用的框架或库,当给定JavaBean时,将"完成它的步伐",即测试所有的getter和setter,验证属性是否与getter和setter匹配等等?
就个人而言,我认为这不是测试中最困难的部分.通过反射可以做到,但这并不是让测试变得有价值的原因.
困难的部分是找出所有可能的输入,"快乐的路径"和错误的情况,确保异常被抛出,等等.
您的Java Bean应该实现equals和hashCode.我更担心检查等于合同的测试:null等于,自反,对称,传递,而不是等于.这些都不是微不足道的.
吸气剂和二传手是你遇到的最少的问题.当人们谈论70%或更高的代码覆盖率标准时,他们经常说可以省略吸气剂和制定者.
虽然我同意有更大的问题要解决,但仍有一些测试Java Bean方法的案例。在大型代码库上工作的大型团队团队可能会遇到问题。我已经看到几种复制/粘贴错误的情况,这些错误会导致getter或setter使用错误的属性。健忘可能导致hashCode和equals方法变得不一致。在这个简单的代码中查找错误可能非常令人沮丧。
Bean Matchers是一个可以在这方面提供帮助的库。它提供了一系列Hamcrest匹配器,用于反射性测试Java Bean。例如:
@Test
public void testBean() {
assertThat(MyBean.class, allOf(
hasValidBeanConstructor(),
hasValidGettersAndSetters(),
hasValidBeanHashCode(),
hasValidBeanEquals(),
hasValidBeanToString()
));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6162 次 |
| 最近记录: |