有沒有一個框架或庫可用,當給定一個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. Java測試框架
- 2. bean比較的單元測試框架
- 3. 硒測試框架
- 4. Scala測試java REST API框架
- 5. 的Java/Scala的測試收集框架
- 6. Java測試管理工具/框架?
- 7. 無法運行Grinder Java測試框架
- 8. Selenium RC的Java測試框架
- 9. Java中的系統測試框架
- 10. MVC框架單元測試java
- 11. 好的Java EE測試框架?
- 12. Sinatra測試框架
- 13. JPA測試框架
- 14. AI測試框架
- 15. Android測試框架
- 16. MATLAB測試框架
- 17. Bean腳本框架
- 18. 系統測試的測試框架
- 19. 多語言測試框架
- 20. webdriver在進行集成測試時用於測試框架java
- 21. 加載測試框架以測試Java應用程序
- 22. 使用Spring框架單例bean進行單元測試
- 23. 創建測試框架
- 24. 黃瓜測試框架
- 25. 自動測試框架
- 26. 運行測試,而測試框架
- 27. theintern測試框架 - 測試iframes
- 28. 組件測試的測試框架
- 29. 用es6測試框架(AVA)測試es5
- 30. Android測試框架說明
你可以通過反射 – hvgotcodes 2010-07-20 22:42:40
如果有與您的getter和setter和莫名其妙的問題你的其他(實際)測試不暴露他們(即不合格)再有,其餘的問題,滾你自己你的測試套件 – 2010-07-21 00:21:43
@mattb:有效點 – 2010-07-21 20:26:50