Junit 的 @RunWith():Runner,即Junit的运行器
什么是Runner,@RunWith()到底有什么用?
Runner是Junit的運行器,即運行測試用例的工具。
我們可以在測試類之上,使用@RunWith()注解為這個類指定一個特定的Runner。當我們沒有指定@RunWith()的時候,會自動使用Junit的默認Runner——BlockJunit4ClassRunner。
常用的Runner:
Suite:測試套件 ;Category:按種類區分的套件;Parameterized:參數化測試; Theories:排列組合。
利用 Runner,可以解決哪些問題?
1.當一個測試方法,存在多種可能的情況時,為了避免重復代碼, Junit提出了“參數化測試”的概念,只寫一個測試函數,把這若干種情況作為參數傳遞進去,一次性的完成測試。
2.當有很多測試類的時候,一次性的跑完所有測試類,或者跑完指定模塊的多個測試類,或者跑完指定類的某些測試方法。
關于問題1,可以比較一下,使用和不使用參數化測試的區別:
不使用:
使用后:
@Parameterized.Parameters public static Collection params(){return Arrays.asList(new Object[][] {{ "1500以下", "0-1500"}, { "100000及以上", "100000-" }, { "1500-1999", "1500-1999"}}); } @Test public void test_getSalaryCodeMonth() {String result = salaryUtil.getSalaryCodeMonth((String) input);assertEquals(expected, result); }上面的案例,雖然代碼量上面沒有很大的變化,但是可以考慮一下,當需要測試的情況非常多,遠大于3個的時候,使用參數化進行測試,會使得代碼看起來簡潔,可維護性高。
下面簡單介紹一下Parameterized,參數化的用法。
(1)使用 @RunWith(Parameterized.class)修飾類
(2)指定參數,這里有兩種方案,一種是注解注入,一種是構造器注入:
(3)構造參數列表方法,該方法需要用@Parameterized.Parameters修飾,方法需要為 public static 修飾,返回Collection類型
@Parameterized.Parameters public static Collection params(){return Arrays.asList(new Object[][] {{ "1500以下", "0-1500"}, { "100000及以上", "100000-" }, { "1500-1999", "1500-1999"}}); }(4)接下來就可以直接使用 input 、expected這兩個參數了,測試用例在運行的時候會根據參數一一匹配執行。
關于解決的問題2:
當然你可以直接在包名上右擊,然后選擇執行全部的測試用例。還有一種方法就是使用Suite運行器,指定所有你想執行的測試類。
如下,定義個類,使用**@RunWith(Suite.class)修飾,并使用@Suite.SuiteClasses**指定想要同時執行的測試類。這個類可以沒有內容,在執行的時候,會把所有指定的類內的測試用例全部執行一遍。
當你的需求是,針對同一個測試類里面的不同方法需要進行分類測試時,可以使用Category運行器,Category繼承于Suite。在一個測試類中,可以給不同的測試方法使用不同的@Category(AFun.class) 來修飾,比如@Category(AFun.class)、@Category(BFun.class)。
執行的時候,使用**@RunWith(Categories.class)修飾類,代表執行Category運行器,同樣需要使用@SuiteClasses指定要執行哪個類,然后通過@IncludeCategory(AFun.class)**來執行被標記為@Category(AFun.class)的方法。
@RunWith(Categories.class)
@SuiteClasses(GetSalaryCodeMonth .class)
@IncludeCategory(AFun.class)
總結
以上是生活随笔為你收集整理的Junit 的 @RunWith():Runner,即Junit的运行器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言字母的组合,C语言求字母的全部组合
- 下一篇: 二分搜索的时间复杂度分析