日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Junit 的 @RunWith():Runner,即Junit的运行器

發(fā)布時間:2024/3/13 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Junit 的 @RunWith():Runner,即Junit的运行器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

什么是Runner,@RunWith()到底有什么用?
Runner是Junit的運行器,即運行測試用例的工具。
我們可以在測試類之上,使用@RunWith()注解為這個類指定一個特定的Runner。當我們沒有指定@RunWith()的時候,會自動使用Junit的默認Runner——BlockJunit4ClassRunner。

常用的Runner:
Suite:測試套件 ;Category:按種類區(qū)分的套件;Parameterized:參數(shù)化測試; Theories:排列組合。

利用 Runner,可以解決哪些問題?
1.當一個測試方法,存在多種可能的情況時,為了避免重復代碼, Junit提出了“參數(shù)化測試”的概念,只寫一個測試函數(shù),把這若干種情況作為參數(shù)傳遞進去,一次性的完成測試。
2.當有很多測試類的時候,一次性的跑完所有測試類,或者跑完指定模塊的多個測試類,或者跑完指定類的某些測試方法。

關于問題1,可以比較一下,使用和不使用參數(shù)化測試的區(qū)別:
不使用:

@Test public void test_getSalaryCodeMonth() throws Exception {String result = salaryUtil.getSalaryCodeMonth("1500以下");assertEquals("0-1500", result);result = salaryUtil.getSalaryCodeMonth("100000及以上");assertEquals("100000-", result);result = salaryUtil.getSalaryCodeMonth("1500-1999");assertEquals("1500-1999", result);}

使用后:

@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個的時候,使用參數(shù)化進行測試,會使得代碼看起來簡潔,可維護性高。
下面簡單介紹一下Parameterized,參數(shù)化的用法。
(1)使用 @RunWith(Parameterized.class)修飾類
(2)指定參數(shù),這里有兩種方案,一種是注解注入,一種是構造器注入:

//方案1 注解注入@Parameterized.Parameter()public Object input;@Parameterized.Parameter(1)public Object expected;public BaseSalaryUtilTest(){}//方案2 構造器注入 // public BaseSalaryUtilTest(Object input, Object expected){ // this.input = input; // this.expected =expected; // }

(3)構造參數(shù)列表方法,該方法需要用@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這兩個參數(shù)了,測試用例在運行的時候會根據(jù)參數(shù)一一匹配執(zhí)行。
關于解決的問題2:
當然你可以直接在包名上右擊,然后選擇執(zhí)行全部的測試用例。還有一種方法就是使用Suite運行器,指定所有你想執(zhí)行的測試類。
如下,定義個類,使用**@RunWith(Suite.class)修飾,并使用@Suite.SuiteClasses**指定想要同時執(zhí)行的測試類。這個類可以沒有內容,在執(zhí)行的時候,會把所有指定的類內的測試用例全部執(zhí)行一遍。

@RunWith(Suite.class) @Suite.SuiteClasses({GetSalaryCodeMonth.class, GetSalaryCodeYear.class, GetMonthSalaryStringUnit.class,GetTextShowSalary.class, GetSalaryStringE.class, GetSalaryCodeE.class, GetUnit.class,GetMonthSalaryString.class, GetNormSalaryString.class, GetLocationStringTest.class, GetLocationStringCustomTest.class}) public class DoSalaryUtilTest { }

當你的需求是,針對同一個測試類里面的不同方法需要進行分類測試時,可以使用Category運行器,Category繼承于Suite。在一個測試類中,可以給不同的測試方法使用不同的@Category(AFun.class) 來修飾,比如@Category(AFun.class)、@Category(BFun.class)。
執(zhí)行的時候,使用**@RunWith(Categories.class)修飾類,代表執(zhí)行Category運行器,同樣需要使用@SuiteClasses指定要執(zhí)行哪個類,然后通過@IncludeCategory(AFun.class)**來執(zhí)行被標記為@Category(AFun.class)的方法。

@RunWith(Categories.class)
@SuiteClasses(GetSalaryCodeMonth .class)
@IncludeCategory(AFun.class)

總結

以上是生活随笔為你收集整理的Junit 的 @RunWith():Runner,即Junit的运行器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。