歡迎您光臨本站 註冊首頁

如何在Maven專案中執行JUnit5測試用例實現

←手機掃碼閱讀     lousu-xi @ 2020-05-11 , reply:0

本文演示瞭如何如何編寫JUnit 5測試用例,在Maven專案中執行JUnit 5測試用例。
編寫JUnit 5測試用例
如果你是Java開發者,那麼對於JUnit應該就不陌生。JUnit是Java單元測試的基礎工具。
JUnit目前最新的版本是JUnit 5.x,但廣大的Java開發者估計還停留在JUnit 4.x,因此有必要演示下如何編寫JUnit 5測試用例。
引入JUnit 5依賴
相比較JUnit 4而言,JUnit 5一個比較大的改變是JUnit 5擁有與JUnit 4不同的全新的API。JUnit 5分成了三部分:
JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage
JUnit Platform是在JVM上啟動測試框架的基礎。 它還定義了TestEngine API,用於開發在平臺上執行的測試框架。 此外,該JUnit Platform還提供了一個控制檯啟動器(用於從命令列啟動該平臺)和一個基於JUnit 4的執行器,用於在基於JUnit 4的環境中在該平臺上執行任何TestEngine。 流行的IDE(IntelliJ IDEA,Eclipse,NetBeans和Visual Studio Code等)和構建工具(Gradle,Maven和Ant等)中也存在對JUnit平臺的一流支援。 JUnit Jupiter是新程式設計模型和擴充套件模型的組合,用於在JUnit 5中編寫測試和擴充套件。Jupiter子專案提供了一個TestEngine,用於在平臺上執行基於Jupiter的測試。 JUnit Vintage提供了一個TestEngine,用於在平臺上執行基於JUnit 3和基於JUnit 4的測試。
因此,在Maven中,JUnit 5分模組的,意味著你可以按需引入上面定義的任意模組。這使得引入JUnit 5依賴就有了多個選擇。
一般而言,力求省事,就可以透過引入junit-jupiter依賴。junit-jupiter就是常用JUnit 5模組的聚合包。

org.junit.jupiterjunit-jupiter${junit-jupiter.version}test


編寫測試用例
下面是一段簡單的Java程式:
/** * Welcome to https://waylau.com */ package com.waylau.java.demo; /** * Hello World. * * @since 1.0.0 2020年4月12日 * @author Way Lau */ public class HelloWorld { private String words; public HelloWorld(String words) { this.words = words; } public String getWords() { return words; } }
按照管理,我們會在Maven工程的test目錄,建立一個與之對應的單元測試用例:
/** * Welcome to https://waylau.com */ package com.waylau.java.demo; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; /** * HelloWorld Test. * * @since 1.0.0 2020年4月12日 * @author Way Lau */ class HelloWorldTests { @Test void testGetWords() { var words = "Hello World"; var hello = new HelloWorld(words); assertEquals(words, hello.getWords()); } }
上述用例非常簡單,就是想測試下,HelloWorld的getWords方法,是否與預期的一致。
這裡需要強調的是JUnit 5和JUnit 4的不同點:
JUnit 5使用的API是org.junit.jupiter.api.*包下
測試方法(比如上例testGetWords),可以不加public。
執行JUnit 5測試用例
上如上文所講,在大多數主流的IDE中,都提供了對JUnit 5的支援。因此可以選擇在IDE中執行,也可以透過Maven執行測試。
在IDE中執行
以Eclipse IDE為例,右鍵類或者方法,選擇「Run As -> JUnit Test」即可。如下圖所示。
透過Maven執行測試
在Maven中執行測試用例的命令如下:
mvn test
如果你執行了上述命令,會得到下面的測試結果
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running com.waylau.java.demo.HelloWorldTests
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.002 sec Results : Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 [INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.983 s
[INFO] Finished at: 2020-04-12T11:22:16+08:00
[INFO] ------------------------------------------------------------------------
上面結果沒有失敗的用例,但同時你也發現了沒有成功的用例。因為根本沒有執行測試用例。
這是因為,在Maven中並不能直接識別JUnit 5測試用例。如何解決?此時,還需要額外加多Maven Surefire或Maven Failsafe兩個外掛。

maven-surefire-plugin${maven-surefire-plugin.version}maven-failsafe-plugin${maven-failsafe-plugin.version}


在Maven中再次執行測試用例,會得到下面的測試結果:
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.waylau.java.demo.HelloWorldTests
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.045 s - in com.waylau.java.demo.HelloWorldTests
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.116 s
[INFO] Finished at: 2020-04-12T11:30:29+08:00
[INFO] ------------------------------------------------------------------------
可以看到,HelloWorldTests類已經得到了測試執行。


[lousu-xi ] 如何在Maven專案中執行JUnit5測試用例實現已經有129次圍觀

http://coctec.com/docs/program/show-post-233808.html