溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

@ParameterizedTest與@EnumSource怎么在Junit 5中使用

發(fā)布時間:2021-03-25 17:29:18 來源:億速云 閱讀:186 作者:Leah 欄目:編程語言

這期內容當中小編將會給大家?guī)碛嘘P@ParameterizedTest與@EnumSource怎么在Junit 5中使用,文章內容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

概述

有時候業(yè)務代碼里會根據(jù)一個枚舉值來區(qū)分業(yè)務場景,比如說:

public enum ActivityLimitEnum {
  LIMIT(1,"封頂"),
  UNLIMIT(0,"上不封頂");
}

如果編寫單元測試來驗證業(yè)務代碼,至少需要寫兩個測試方法,一個驗收封頂邏輯,一個驗收不封頂邏輯。

@Test
  @DisplayName("封頂")
  void testLimit() {
  }
  @Test
  @DisplayName("不封頂")
  void testUnLimit() {
  }

由于這兩個場景只是區(qū)分封頂和不封頂,其他的都是一樣的,如果寫兩個測試方法,testLimittestUnLimit方法里會有很多重復代碼。這個時候Junit 5 @ParameterizedTest@EnumSource就可以派上用場了。

  @ParameterizedTest
  @EnumSource(ActivityLimitEnum.class)
  @DisplayName("封頂和不封頂")
  void test(ActivityLimitEnum activityLimitEnum) {
    if (ActivityLimitEnum.LIMIT.equals(activityLimitEnum)) {
      assertFalse(false);
    } 
    else if (ActivityLimitEnum.UNLIMIT.equals(activityLimitEnum)) {
      assertTrue(true);
    }
  }

Junit 5在執(zhí)行上面的test方法的時候,由于ActivityLimitEnum中有LIMITUNLIMIT兩個枚舉,先按照LIMIT類型執(zhí)行一次test方法,再按照UNLIMIT類型再次執(zhí)行test方法,共執(zhí)行兩次test方法,因此我們需要在test方法里,區(qū)分一下類型,按照實際情況編寫assert代碼進行驗證即可。

我們用Intellij IDEA執(zhí)行上面的單元測試,效果如下:

@ParameterizedTest與@EnumSource怎么在Junit 5中使用

可以看到test方法確實執(zhí)行了兩次,LIMITUNLIMIT各執(zhí)行一次。

如果枚舉中的枚舉值非常多,而單元測試里只是想驗證其中部分枚舉值,那可以用下面的方式:

  @ParameterizedTest
  @EnumSource(value = ActivityLimitEnum.class,names = {"LIMIT"})
  @DisplayName("封頂和不封頂")
  void test(ActivityLimitEnum activityLimitEnum) {
    if (ActivityLimitEnum.LIMIT.equals(activityLimitEnum)) {
      assertFalse(false);
    }
    else if (ActivityLimitEnum.UNLIMIT.equals(activityLimitEnum)) {
      assertTrue(true);
    }
  }

這樣就只會執(zhí)行LIMIT枚舉值對應的場景。

如果要在Junit 5里使用@ParameterizedTest@EnumSource,需要添加如下依賴:

<dependency>
  <groupId>org.junit.jupiter</groupId>
  <artifactId>junit-jupiter-params</artifactId>
  <version>5.2.0</version>
  <scope>test</scope>
</dependency>

上述就是小編為大家分享的@ParameterizedTest與@EnumSource怎么在Junit 5中使用了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

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

AI