Junit5 架構(gòu)、新特性及基本使用(常用注解與套件執(zhí)行)

什么是 Junit5,在 Junit5 的官方介紹文檔中這寫到:
Junit5 由JUnit Platform + JUnit Jupiter + JUnit Vintage3部分構(gòu)成,借用 IBM Developer 的一張圖來說明 JUnit 5 的架構(gòu):
JUnit Platform:
JUnit Jupiter:
JUnit Vintage:
嵌套單元測試
Lambda支持
參數(shù)化測試
重復(fù)測試
動態(tài)測試
JUnit 4 與 JUnit 5 中的注解比較

1080×435 122 KB
1)創(chuàng)建 maven 工程 XUnit,pom.xml中添加Junit5的依賴。
2)其余的 XUnit 框架通用的設(shè)計(jì)運(yùn)行規(guī)則可參考:《如何利用 xUnit 框架對測試用例進(jìn)行維護(hù)》。
3)添加用例@Test,再在用例執(zhí)行前后添加@BeforeEach、@AfterEach:
運(yùn)行結(jié)果:
4)在測試類執(zhí)行前后添加@BeforeAll和@AfterAll:
測試結(jié)果:
5)在測試用例test1上加入注解@Disabled,使test1失效。
測試結(jié)果:
從測試結(jié)果中我們可以看到 test1 用例被 ignore,沒有被執(zhí)行。
6)分別將test1和test2用@DisplayName加上用例展示名稱。
測試結(jié)果:
7)對測試用例2加上注解@RepeatedTest,使其額外重復(fù)執(zhí)行3次:
測試結(jié)果:
從測試結(jié)果中我們可以看到測試用例2被額外重復(fù)執(zhí)行了3次
8)對于@Nested嵌套執(zhí)行舉例如下:
測試結(jié)果:
由測試結(jié)果可以看出,@Nested的執(zhí)行順序?yàn)橄葓?zhí)行@Nested嵌套外層的用例,再以倒敘形式執(zhí)行@Nested用例,然后再執(zhí)行第二層嵌套的用例:外層->倒敘嵌套->第二層嵌套。
@RunWith?是從Junit4遷移過來的,@RunWith?連同它的參數(shù) JUnitPlatform.class(一個基于 JUnit 4 且理解 JUnit Platform 的 Runner)讓您可以在 Eclipse 內(nèi)運(yùn)行 JUnit Jupiter 單元測試。Eclipse 尚未原生支持 JUnit 5。未來,Eclipse 將提供原生的 JUnit 5 支持,那時我們不再需要此注解;Junit5官方給出了替代它的注解:
有兩個包testcasedemo, junit5demo,利用 @RunWith+@SelectPackages 將包中測試類依次運(yùn)行。
套件類:
測試結(jié)果:@RunWith+@SelectPackages+@IncludePackages配合使用過濾出需要執(zhí)行的測試包testcasedemo.demo2。
套件類:
測試結(jié)果:@RunWith+@SelectPackages+@ExcludePackages配合使用過濾出不需要執(zhí)行的測試包testcasedemo.demo2。
套件類:
測試結(jié)果:將 junit5demo 包下的 TestJunit5demo 和 testcasedemo.demo2 所有測試類過濾出來并執(zhí)行。
套件類:
測試結(jié)果:
在testcasedemo.demo2.TestDemo2的方法testDemo2上加上注解@Tag:
過濾并執(zhí)行方法testDemo2:
套件類:
測試結(jié)果:
Junit5官網(wǎng):JUnit 5 User Guide
IBM Developer:https://www.ibm.com/developerworks/cn/java/j-introducing-junit5-part1-jupiter-api/index.html
https://www.ibm.com/developerworks/cn/java/j-junit5/index.html
Junit5 在特性上已經(jīng)超越 TestNG 了,會成為未來 Java 屆的首選測試框架。