溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

在Maven項(xiàng)目中運(yùn)行JUnit5測試用例的實(shí)現(xiàn)方法

發(fā)布時(shí)間:2020-07-29 14:34:21 來源:億速云 閱讀:224 作者:小豬 欄目:編程語言

這篇文章主要講解了在Maven項(xiàng)目中運(yùn)行JUnit5測試用例的實(shí)現(xiàn)方法,內(nèi)容清晰明了,對(duì)此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。

編寫JUnit 5測試用例

如果你是Java開發(fā)者,那么對(duì)于JUnit應(yīng)該就不陌生。JUnit是Java單元測試的基礎(chǔ)工具。

JUnit目前最新的版本是JUnit 5.x,但廣大的Java開發(fā)者估計(jì)還停留在JUnit 4.x,因此有必要演示下如何編寫JUnit 5測試用例。

引入JUnit 5依賴

相比較JUnit 4而言,JUnit 5一個(gè)比較大的改變是JUnit 5擁有與JUnit 4不同的全新的API。JUnit 5分成了三部分:

JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage
  1. JUnit Platform是在JVM上啟動(dòng)測試框架的基礎(chǔ)。 它還定義了TestEngine API,用于開發(fā)在平臺(tái)上運(yùn)行的測試框架。 此外,該JUnit Platform還提供了一個(gè)控制臺(tái)啟動(dòng)器(用于從命令行啟動(dòng)該平臺(tái))和一個(gè)基于JUnit 4的運(yùn)行器,用于在基于JUnit 4的環(huán)境中在該平臺(tái)上運(yùn)行任何TestEngine。 流行的IDE(IntelliJ IDEA,Eclipse,NetBeans和Visual Studio Code等)和構(gòu)建工具(Gradle,Maven和Ant等)中也存在對(duì)JUnit平臺(tái)的一流支持。
  2. JUnit Jupiter是新編程模型和擴(kuò)展模型的組合,用于在JUnit 5中編寫測試和擴(kuò)展。Jupiter子項(xiàng)目提供了一個(gè)TestEngine,用于在平臺(tái)上運(yùn)行基于Jupiter的測試。
  3. JUnit Vintage提供了一個(gè)TestEngine,用于在平臺(tái)上運(yùn)行基于JUnit 3和基于JUnit 4的測試。

因此,在Maven中,JUnit 5分模塊的,意味著你可以按需引入上面定義的任意模塊。這使得引入JUnit 5依賴就有了多個(gè)選擇。

一般而言,力求省事,就可以通過引入junit-jupiter依賴。junit-jupiter就是常用JUnit 5模塊的聚合包。

<dependency>
  <groupId>org.junit.jupiter</groupId>
  <artifactId>junit-jupiter</artifactId>
  <version>${junit-jupiter.version}</version>
  <scope>test</scope>
</dependency>

編寫測試用例

下面是一段簡單的Java程序:

/**
 * Welcome to https://waylau.com
 */
package com.waylau.java.demo;

/**
 * Hello World.
 * 
 * @since 1.0.0 2020年4月12日
 * @author <a href="https://waylau.com" rel="external nofollow" rel="external nofollow" >Way Lau</a>
 */
public class HelloWorld {

 private String words;

 public HelloWorld(String words) {
 this.words = words;
 }
 
 public String getWords() {
 return words;
 }

}

按照管理,我們會(huì)在Maven工程的test目錄,創(chuàng)建一個(gè)與之對(duì)應(yīng)的單元測試用例:

/**
 * 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 <a href="https://waylau.com" rel="external nofollow" rel="external nofollow" >Way Lau</a>
 */
class HelloWorldTests {

 @Test
 void testGetWords() {
 var words = "Hello World";
 var hello = new HelloWorld(words);
 
 assertEquals(words, hello.getWords());
 }
}

上述用例非常簡單,就是想測試下,HelloWorld的getWords方法,是否與預(yù)期的一致。

這里需要強(qiáng)調(diào)的是JUnit 5和JUnit 4的不同點(diǎn):

  • JUnit 5使用的API是org.junit.jupiter.api.*包下
  • 測試方法(比如上例testGetWords),可以不加public。

運(yùn)行JUnit 5測試用例

上如上文所講,在大多數(shù)主流的IDE中,都提供了對(duì)JUnit 5的支持。因此可以選擇在IDE中運(yùn)行,也可以通過Maven執(zhí)行測試。

在IDE中運(yùn)行

以Eclipse IDE為例,右鍵類或者方法,選擇“Run As -> JUnit Test”即可。如下圖所示。

在Maven項(xiàng)目中運(yùn)行JUnit5測試用例的實(shí)現(xiàn)方法

通過Maven執(zhí)行測試

在Maven中執(zhí)行測試用例的命令如下:

mvn test

如果你執(zhí)行了上述命令,會(huì)得到下面的測試結(jié)果

-------------------------------------------------------
 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] ------------------------------------------------------------------------

上面結(jié)果沒有失敗的用例,但同時(shí)你也發(fā)現(xiàn)了沒有成功的用例。因?yàn)楦緵]有執(zhí)行測試用例。

這是因?yàn)?,在Maven中并不能直接識(shí)別JUnit 5測試用例。如何解決?此時(shí),還需要額外加多Maven Surefire或Maven Failsafe兩個(gè)插件。

<build>
  <plugins>
    <plugin>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>${maven-surefire-plugin.version}</version>
    </plugin>
    <plugin>
      <artifactId>maven-failsafe-plugin</artifactId>
      <version>${maven-failsafe-plugin.version}</version>
    </plugin>
  </plugins>
</build>

在Maven中再次執(zhí)行測試用例,會(huì)得到下面的測試結(jié)果:

[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類已經(jīng)得到了測試執(zhí)行。

看完上述內(nèi)容,是不是對(duì)在Maven項(xiàng)目中運(yùn)行JUnit5測試用例的實(shí)現(xiàn)方法有進(jìn)一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI