在JUnit中超越核心Hamcrest
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                在JUnit中超越核心Hamcrest
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                
                            
                            
                               在通過JUnit和Hamcrest改進對assertEquals的文章中,我介紹了將Hamcrest與JUnit一起使用 。 然后,我查看了JUnit的內置Hamcrest Core Matcher支持 。 在本文中,我將介紹如何將Hamcrest的非核心匹配器與JUnit一起應用。 這些非核心匹配器默認情況下不包含在JUnit中,但可以通過在類路徑中包含Hamcrest JAR來使用。    盡管JUnit包含Hamcrest核心匹配器 ,如果只想使用核心匹配器,則使它們更易于使用,但這種包含可能使非核心匹配器的使用更加困難 ,這是一個眾所周知的問題 。    由于JUnit不包含非核心Hamcrest匹配器,因此需要下載 Hamcrest JAR。 對于本文中的示例,我正在使用hamcrest-all-1.2.jar 。    下一個屏幕快照顯示了將所有繁瑣的JAR與常規JUnit庫(在本例中為NetBeans 7.2 beta提供的JUnit 4.10)組合在一起時遇到的問題。 如屏幕快照所示,在hamcrest-all-1.2.jar之前,當junit-4.10.jar包含在NetBeans庫中時,先前的工作代碼(來自我的上 hamcrest-all-1.2.jar 文章 )會中斷。 NetBeans和命令行編譯器均在此屏幕快照中顯示此損壞。      切換測試庫的順序,以便首先列出Hamcrest庫,然后列出其后的JUnit JAR,這會使編譯器中斷測試代碼。 這顯示在下一個屏幕快照中。      盡管切換依賴庫的順序,以便在JUnit JAR確實防止構建問題之前就包含Hamcrest JAR,但這通常不是令人滿意的方法。 這種方法對于長期可維護性來說太脆弱了。 幸運的是,JUnit直接支持一種更好的方法來處理此問題。    可以下載特殊的無Hamcrest的JUnit JAR。 下一個屏幕快照顯示了本示例中使用的快照: junit-dep-4.10.jar 。 JAR名稱中的-dep是不包含Hamcrest的線索。 下載頁面上JAR旁邊的符號(下圖顯示了屏幕快照)也指出了這一點(“無障礙的JAR”)。      借助JUnit JAR的無Hamcrest“ dep”版本,我可以在與Hamcrest JAR相關的任何時候將其包含在測試庫中,并且仍然可以構建測試代碼。 這比依賴于特定順序的測試庫更有利。 下一個圖像顯示了NetBeans的屏幕快照,并且即使首先列出了JUnit JAR,命令行構建仍然成功。      使用適當的庫(JUnit-dep JAR和Hamcrest“ all” JAR)后,所有Hamcrest的匹配器都可以與基于JUnit的測試一起使用。 除了與JUnit捆綁在一起的核心匹配之外,Hamcrest還提供了許多匹配器 。 了解可用的其他匹配器的一種方法是查看Hamcrest JAR中的類。 以下是對Hamcrest JAR運行jar tvf命令并刪除許多條目以留下一些最有趣的條目的輸出。 “核心”匹配器傾向于基于“核心”程序包中的類,而非核心匹配器傾向于基于所有其他程序包中其名稱中沒有“核心”的類。  4029 Thu May 21 23:21:20 MDT 2009 org/hamcrest/core /AllOf.java3592 Thu May 21 23:21:20 MDT 2009 org/hamcrest/ core /AnyOf.java1774 Thu May 21 23:21:20 MDT 2009 org/hamcrest/ core /CombinableMatcher.java1754 Thu May 21 23:21:20 MDT 2009 org/hamcrest/ core /DescribedAs.java1104 Thu May 21 23:21:20 MDT 2009 org/hamcrest/ core /Every.java2088 Thu May 21 23:21:20 MDT 2009 org/hamcrest/ core /Is.java1094 Thu May 21 23:21:20 MDT 2009 org/hamcrest/ core /IsAnything.java2538 Thu May 21 23:21:20 MDT 2009 org/hamcrest/ core /IsCollectionContaining.java1862 Thu May 21 23:21:20 MDT 2009 org/hamcrest/ core /IsEqual.java2882 Thu May 21 23:21:20 MDT 2009 org/hamcrest/ core /IsInstanceOf.java1175 Thu May 21 23:21:20 MDT 2009 org/hamcrest/ core /IsNot.java1230 Thu May 21 23:21:20 MDT 2009 org/hamcrest/ core /IsNull.java960 Thu May 21 23:21:20 MDT 2009 org/hamcrest/ core /IsSame.java675 Thu May 21 23:21:20 MDT 2009 org/hamcrest/ core /StringContains.java667 Thu May 21 23:21:20 MDT 2009 org/hamcrest/ core /StringEndsWith.java678 Thu May 21 23:21:20 MDT 2009 org/hamcrest/ core /StringStartsWith.java2557 Thu May 21 23:21:20 MDT 2009 org/hamcrest/collection/IsArray.java1805 Thu May 21 23:21:20 MDT 2009 org/hamcrest/collection/IsArrayContaining.java1883 Thu May 21 23:21:20 MDT 2009 org/hamcrest/collection/IsArrayContainingInAnyOrder.java1765 Thu May 21 23:21:20 MDT 2009 org/hamcrest/collection/IsArrayContainingInOrder.java1388 Thu May 21 23:21:20 MDT 2009 org/hamcrest/collection/IsArrayWithSize.java1296 Thu May 21 23:21:20 MDT 2009 org/hamcrest/collection/IsCollectionWithSize.java812 Thu May 21 23:21:20 MDT 2009 org/hamcrest/collection/IsEmptyCollection.java866 Thu May 21 23:21:20 MDT 2009 org/hamcrest/collection/IsEmptyIterable.java1086 Thu May 21 23:21:20 MDT 2009 org/hamcrest/collection/IsIn.java3426 Thu May 21 23:21:20 MDT 2009 org/hamcrest/collection/IsIterableContainingInAnyOrder.java3479 Thu May 21 23:21:20 MDT 2009 org/hamcrest/collection/IsIterableContainingInOrder.java993 Thu May 21 23:21:20 MDT 2009 org/hamcrest/collection/IsIterableWithSize.java1899 Thu May 21 23:21:20 MDT 2009 org/hamcrest/collection/IsMapContaining.java1493 Thu May 21 23:21:20 MDT 2009 org/hamcrest/collection/IsMapContainingKey.java1421 Thu May 21 23:21:20 MDT 2009 org/hamcrest/collection/IsMapContainingValue.java1380 Thu May 21 23:21:20 MDT 2009 org/hamcrest/number/IsCloseTo.java2878 Thu May 21 23:21:20 MDT 2009 org/hamcrest/number/OrderingComparison.java1082 Thu May 21 23:21:20 MDT 2009 org/hamcrest/object/HasToString.java918 Thu May 21 23:21:20 MDT 2009 org/hamcrest/object/IsCompatibleType.java2080 Thu May 21 23:21:20 MDT 2009 org/hamcrest/object/IsEventFrom.java1164 Thu May 21 23:21:20 MDT 2009 org/hamcrest/text/IsEmptyString.java1389 Thu May 21 23:21:20 MDT 2009 org/hamcrest/text/IsEqualIgnoringCase.java2058 Thu May 21 23:21:20 MDT 2009 org/hamcrest/text/IsEqualIgnoringWhiteSpace.java1300 Thu May 21 23:21:20 MDT 2009 org/hamcrest/text/StringContainsInOrder.java4296 Thu May 21 23:21:20 MDT 2009 org/hamcrest/xml/HasXPath.java
 如果希望與JUnit一起使用的Hamcrest匹配器超出“核心”匹配器,則JUnit提供的沒有自動內置的Hamcrest的JAR(“ dep” JAR)使開發人員可以更仔細地構建其類路徑。   
                        
                        
                        參考:來自我們的JCG合作伙伴 Dustin Marx 在JUnit中超越核心Hamcrest,來自Inspired by Actual Events博客。
翻譯自: https://www.javacodegeeks.com/2012/06/moving-beyond-core-hamcrest-in-junit.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的在JUnit中超越核心Hamcrest的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 电脑玩cs局域网(电脑玩cs局域网游戏)
 - 下一篇: 广州宏基笔记本维修(宏基笔记本官方维修中