天天看點

Junit5注解說明1.Junit5注解2.參數源注解3.參考文章

1.Junit5注解

Junit Jupiter支援以下注釋,

用于配置測試和擴充測試架構。

除非另有說明,

所有的核心注釋都位于junit-jupiter-api子產品中的

org.junit.jupiter.api包中。

序号 注解 說明
1

@Test

表示方法是測試方法,與Junit4的@Test不同,不能聲明任何屬性,因為JUnit Jupiter中的測試擴充需要通過專用的注解。
2

@ParameterizedTest

表示方法是參數化測試。
3

@RepeatedTest

表示方法是可以按照指定次數重複執行。
4

@TestFactory

表示方法是動态測試的測試工廠。
5

@TestTemplate

表示方法是測試用例的模闆,用于支援多次調用,調用的次數取決于調用上下文傳回的注冊提供者。
6

@TestClassOrder

用于@Nested注解的測試類,可以配置測試類執行順序。
7

@TestMethodOrder

用于為測試類配置測試方法執行順序;類似于Junit4的@FixMethodOrder。
8

@TestInstance

用于為測試類配置測試執行個體生命周期。
9

@DisplayName

為測試類或測試方法聲明自定義的展示名稱。
10

@DisplayNameGeneration

為測試類聲明一個自定義的顯示名稱生成器。
11

@BeforeEach

表示方法應該在目前類中每個 @Test, @RepeatedTest, @ParameterizedTest 或 @TestFactory 方法之前執行;類似于Junit4的@Before 。即在每個單元測試之前執行,如果測試類有n個測試方法,則被執行n次。
12

@AfterEach

表示方法應該在目前類中每個 @Test, @RepeatedTest, @ParameterizedTest 或 @TestFactory 方法之後執行;類似于Junit4的@After 。即在每個單元測試之後執行,如果測試類有n個測試方法,則被執行n次。
13

@BeforeAll

表示方法應該在目前類中的所有@Test,@RepeatedTest,@ParameterizedTest和@TestFactory方法之前執行;類似于Junit 4的@BeforeClass。這樣的方法是必須是靜态的,如果配合test instance lifecycle(per-class)使用,可以是非靜态的。方法隻會執行一次。
14

@AfterAll

表示方法應該在目前類中的所有@Test,@RepeatedTest,@ParameterizedTest和@TestFactory方法之前執行;類似于Junit 4的@AfterClass。這樣的方法是必須是靜态的,如果配合test instance lifecycle(per-class)使用,可以是非靜态的。方法隻會執行一次。
15

@Nested

表示測試類是非靜态的嵌套測試類。@BeforeAll和@AfterAll方法不能直接在@Nested測試類中使用,除非配合test instance lifecycle(per-class)使用。
16

@Tag

用于在類或方法上聲明用于過濾測試的标簽;類似于TestNG中的測試組或Junit 4中的Categories。
17

@Disabled

用于禁用一個測試類或測試方法;類似于JUnit 4的' @Ignore '。即執行單元測試時,會忽略對應的測試類或者測試方法。
18

@Timeout

用于測試方法、測試工廠、測試模闆或生命周期方法,在其執行超過指定時間時失敗。
19

@ExtendWith

用于以聲明方式注冊擴充。
20

@RegisterExtension

用于通過字段以程式設計方式注冊擴充。
21

@TempDir

用于在生命周期方法或測試方法中通過字段注入或參數注入臨時目錄;位于org.junit.jupiter.api.io包。

另外還有一些注釋,

目前是實驗性的,

感興趣的請參考實驗API中的表格。

2.參數源注解

參數化測試使用@ParameterizedTest注解代替@Test,

可以使用不同的參數多次運作同一個測試方法。

但是必須至少聲明一個參數源,

然後在測試方法中使用這些參數。

配合@ParameterizedTest使用的參數源注解如下:

序号 注解 說明
1

@ValueSource

最簡單的參數源。可以指定單個字面值數組,并且在參數化測試時提供單個參數。
2

@NullSource

為參數化測試方法提供一個空參數,不能用于具有基本類型的參數。
3

@EmptySource

為參數化測試方法提供一個空參數,用于以下類型的參數:java.lang.String, java.util.List, java.util.Set, java.util.Map, primitive arrays (比如 int[], char[][]等等), object arrays (比如String[], Integer[][]等等)。但是不支援這些類型的子類型。
4

@NullAndEmptySource

一個組合注釋,結合了@NullSource和@EmptySource的功能。
5

@EnumSource

提供了一種使用枚舉常量的友善方法。
6

@MethodSource

可以引用測試類或外部類的一個或多個工廠方法。
7

@CsvSource

可以用逗号分隔的值來表達參數清單(例如CSV字元串文字)。通過@CsvSource中的value屬性提供的每個字元串表示一個CSV行,并導緻對參數化測試的一次調用。
8

@CsvFileSource

使用類路徑或本地檔案系統中CSV檔案(逗号分隔的)作為參數源,檔案中的每一行都會導緻對參數化測試的一次調用。
9

@ArgumentsSource

可以用來指定一個自定義的、可重用的ArgumentsProvider。注意ArgumentsProvider的實作必須聲明為頂級類或靜态嵌套類。

3.參考文章

該更新你的JUnit版本了——JUnit5基本介紹Spring Boot 內建 JUnit5,更優雅單元測試JUnit 5 User Guide