亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

JUnit5中的參數化測試實現方法

發布時間:2023-11-17 11:47:58 來源:億速云 閱讀:138 作者:栢白 欄目:開發技術

本篇文章和大家了解一下JUnit5中的參數化測試實現方法。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。


JUnit是Java中最受歡迎的測試框架之一。JUnit 5是JUnit的最新版本,它引入了許多新功能,其中包括參數化測試。參數化測試使得我們可以使用不同的參數運行同一個測試方法,從而減少我們編寫測試用例的工作量,并提高測試覆蓋率。在本文中,我們將深入探討JUnit 5中的參數化測試。

參數化測試的基本概念

在JUnit 5中,我們可以使用@ParameterizedTest注解來創建參數化測試。該注解用于標記一個測試方法,并告訴JUnit該方法需要使用不同的參數運行多次。
下面是一個簡單的例子:

@ParameterizedTest
@ValueSource(ints = {1, 2, 3})
void testWithInts(int argument) {
    assertTrue(argument > 0 && argument < 4);
}

在上面的例子中,我們使用@ParameterizedTest注解標記了一個測試方法,并使用@ValueSource注解指定了參數的值。在這個例子中,我們將測試方法運行了三次,每次使用不同的參數值(1、2和3)。在每次運行測試方法時,JUnit都會將參數值傳遞給該方法。

使用不同類型的參數

在JUnit 5中,我們可以使用不同類型的參數來運行參數化測試。下面是一些常見的參數類型:

  • @ValueSource:用于傳遞基本類型的參數。

  • @EnumSource:用于傳遞枚舉類型的參數。

  • @MethodSource:用于傳遞一個方法返回的參數列表。

  • @CsvSource:用于傳遞逗號分隔的參數列表。

  • @CsvFileSource:用于傳遞CSV文件中的參數列表。

  • @ArgumentsSource:用于傳遞自定義的參數列表。

下面是一個使用@EnumSource注解的例子:

@ParameterizedTest
@EnumSource(value = TimeUnit.class, names = {"DAYS", "HOURS"})
void testWithEnumSource(TimeUnit unit) {
    assertTrue(EnumSet.of(TimeUnit.DAYS, TimeUnit.HOURS).contains(unit));
}

在上面的例子中,我們使用@EnumSource注解來指定枚舉類型的參數。我們將該注解的value參數設置為TimeUnit.class,表示我們要使用TimeUnit枚舉類型的參數。我們將該注解的names參數設置為{"DAYS", "HOURS"},表示我們只想使用TimeUnit.DAYS和TimeUnit.HOURS兩種參數值。

使用自定義的參數

除了使用JUnit提供的參數類型之外,我們還可以使用自定義的參數。我們只需要實現ArgumentsProvider接口,并在測試方法上使用@ArgumentsSource注解即可。
下面是一個使用自定義參數的例子:

class MyArgumentsProvider implements ArgumentsProvider {
    @Override
    public Stream<? extends Arguments> provideArguments(ExtensionContext context) {
        return Stream.of(Arguments.of("apple", 1), Arguments.of("banana", 2));
    }
}
@ParameterizedTest
@ArgumentsSource(MyArgumentsProvider.class)
void testWithCustomArgs(String fruit, int number) {
    assertNotNull(fruit);
    assertNotEquals(0, number);
}

在上面的例子中,我們實現了一個名為MyArgumentsProvider的自定義參數提供器。該提供器返回了兩個參數列表,每個參數列表包含兩個參數。我們使用@ArgumentsSource注解來指定該提供器,并將其應用于測試方法。

參數化測試的高級用法

在JUnit 5中,我們可以使用@DisplayName注解來為測試方法指定一個自定義名稱。這個名稱將用于在測試報告中顯示。

下面是一個使用@DisplayName注解的例子:

@ParameterizedTest(name = "{index} => a={0}, b={1}, sum={2}")
@CsvSource({"1,2,3", "4,5,9", "6,7,13"})
@DisplayName("Test adding two numbers")
void testAdd(int a, int b, int sum) {
    assertEquals(sum, a + b);
}

在上面的例子中,我們使用@CsvSource注解指定了參數列表,并使用@DisplayName注解為測試方法指定了一個自定義名稱。

結論

JUnit 5中的參數化測試使得我們可以使用不同的參數運行同一個測試方法,從而減少了我們編寫測試用例的工作量,并提高了測試覆蓋率。在本文中,我們介紹了JUnit 5中參數化測試的基本概念、使用不同類型的參數、使用自定義的參數以及高級用法。希望這篇文章能夠幫助您更好地理解JUnit 5中的參數化測試。

以上就是JUnit5中的參數化測試實現方法的簡略介紹,當然詳細使用上面的不同還得要大家自己使用過才領會。如果想了解更多,歡迎關注億速云行業資訊頻道哦!

向AI問一下細節

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

AI

漳州市| 武胜县| 潼南县| 河曲县| 石台县| 丹棱县| 浦东新区| 天长市| 旬阳县| 会理县| 息烽县| 平湖市| 龙山县| 乐都县| 汾西县| 绩溪县| 苍梧县| 张家界市| 萨嘎县| 沂源县| 海晏县| 乐至县| 涞源县| 石屏县| 沙河市| 岗巴县| 上高县| 固镇县| 依兰县| 通海县| 株洲市| 琼结县| 治县。| 阿拉尔市| 桐梓县| 黄石市| 平罗县| 夹江县| 德庆县| 广河县| 阜新市|