有没有一个框架或库可用,当给定一个JavaBean时,它将“通过它的步伐”,即测试所有getter和setter,验证属性是否与getter和setter匹配等。?Java bean测试框架
回答
就我个人而言,我认为这不是测试中最困难的部分。通过反思可以做到这一点,但这并不能使测试成为可能。
难的是找出所有可能的输入,对于“幸福路径”和错误的情况下,制作,确保异常抛出时,他们应该是等
你的Java Bean应实现equals和hashCode 。我更担心测试来检查等价合约:空等于,反身,对称,传递,而不是等于。这些都不是微不足道的。
吸气剂和固定器是你的问题中最少的。当人们谈论70%或更高的代码覆盖率标准时,他们经常说可以忽略getter和setter。
同意这不是最难的部分;只是很乏味。我曾为一家撰写了一个bean测试框架的组织工作,以便获取代码覆盖率数字。 – 2010-07-21 20:25:31
我认为这是一个错误的措施。高覆盖率并不意味着良好的测试。像CRAP4J这样的东西可能是一个更好的指标。 – duffymo 2010-07-21 21:14:59
如果你不喜欢像http://commons.apache.org/validator/更喜欢的东西,我会建议你自己写。就个人而言,我不喜欢纯粹的数据保存对象没有任何行为 - 这不是很好的设计。所以如果我没有被迫使用这些对象(通过与j2ee工作),我试图摆脱它们。
这看起来很有希望。谢谢! – 2010-07-21 20:29:20
投票答案是好的:) – Jon 2010-07-21 21:37:23
你可以试试http://oval.sourceforge.net/椭圆它允许你在你的bean上使用注释,然后执行一个验证方法。它不完全符合JSR303。如果你想使用完全兼容的东西,你应该检查出Hibernate验证器。
像上面的状态绝对检查出Apache的公共验证。
我想这个库是回答你的问题: http://outsidemybox.github.com/testUtils/
它测试bean的所有初始值的制定者,吸气剂,hashCode()方法,equals()方法和toString()。 您只需定义默认和非默认属性/值的映射。
它也可以用附加的非默认构造函数测试bean的对象。
虽然我同意有更大的问题需要解决,但有些情况下用于测试Java bean方法。处理大型代码库的大型团队可能会遇到问题。我已经看到了一些复制/粘贴错误的情况,导致getter或setter在错误的属性上工作。健忘可能会导致hashCode和equals方法变得不一致。在这个简单的代码中查找错误可能非常令人沮丧。
Bean Matchers是一个库,可以在这方面提供帮助。它提供了一系列用于反射测试Java bean的Hamcrest匹配器。例如:
@Test
public void testBean() {
assertThat(MyBean.class, allOf(
hasValidBeanConstructor(),
hasValidGettersAndSetters(),
hasValidBeanHashCode(),
hasValidBeanEquals(),
hasValidBeanToString()
));
}
Bean Matchers图书馆转移到Github。新的URL https://github.com/orien/bean-matchers – 2017-08-07 08:15:28
- 1. bean比较的单元测试框架
- 2. 硒测试框架
- 3. Selenium RC的Java测试框架
- 4. Java测试管理工具/框架?
- 5. 好的Java EE测试框架?
- 6. Java中的系统测试框架
- 7. Scala测试java REST API框架
- 8. Bean脚本框架
- 9. Android测试框架
- 10. JPA测试框架
- 11. Sinatra测试框架
- 12. MATLAB测试框架
- 13. 多语言测试框架
- 14. 使用Spring框架单例bean进行单元测试
- 15. 黄瓜测试框架
- 16. 自动测试框架
- 17. 用es6测试框架(AVA)测试es5
- 18. 组件测试的测试框架
- 19. theintern测试框架 - 测试iframes
- 20. 运行测试,而测试框架
- 21. Android测试框架说明
- 22. Java:注入Singleton bean来测试
- 23. BDD Android UI测试框架?
- 24. 测试自动化框架
- 25. C#.NET 4.0测试框架?
- 26. 测试框架选择
- 27. .NET测试框架建议
- 28. WPF单元测试框架
- 29. 集成测试框架?
- 30. Xcode仪器 - 测试框架?
你可以通过反射 – hvgotcodes 2010-07-20 22:42:40
如果有与您的getter和setter和莫名其妙的问题你的其他(实际)测试不暴露他们(即不合格)再有,其余的问题,滚你自己你的测试套件 – 2010-07-21 00:21:43
@mattb:有效点 – 2010-07-21 20:26:50