不同注解的區別如下:
特性 |
Junit 4 | Junit 5 |
|
@BeforeClass | @BeforeAll |
|
@AfterClass | @AfterAll |
|
@Before | @BeforeEach |
|
@After | @AfterEach |
標記的代碼@Before
在每次測試之前執行,而@BeforeClass
在整個測試夾具之前運行一次。如果你的測試類有十個測試,則@Before
代碼將執行十次,但@BeforeClass
僅執行一次。
通常,@BeforeClass
當多個測試需要共享相同的計算昂貴的設置代碼時,可以使用。建立數據庫連接屬於此類。你可以將代碼從@BeforeClass
移到@Before
,但是測試運行可能需要更長的時間。注意,標記的代碼@BeforeClass
作為靜態初始化程序運行,因此它將在創建測試夾具的類實例之前運行。
在JUnit 5中,標記@BeforeEach
和與JUnit 4中@BeforeAll
的@Before
和等效。@BeforeClass
它們的名稱更能指示它們的運行時間,並且松散地解釋為:“在每個測試之前”和“一次在所有測試之前”。