Có, có thể chạy các phương pháp thiết lập và loại bỏ trước và sau bất kỳ thử nghiệm nào trong bộ thử nghiệm một cách đáng tin cậy. Hãy để tôi chứng minh bằng mã:
package com.test;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
@RunWith(Suite.class)
@SuiteClasses({Test1.class, Test2.class})
public class TestSuite {
@BeforeClass
public static void setUp() {
System.out.println("setting up");
}
@AfterClass
public static void tearDown() {
System.out.println("tearing down");
}
}
Vì vậy, Test1
lớp của bạn sẽ trông giống như sau:
package com.test;
import org.junit.Test;
public class Test1 {
@Test
public void test1() {
System.out.println("test1");
}
}
... và bạn có thể tưởng tượng rằng nó Test2
trông tương tự. Nếu bạn chạy TestSuite
, bạn sẽ nhận được:
setting up
test1
test2
tearing down
Vì vậy, bạn có thể thấy rằng thiết lập / hủy bỏ chỉ chạy trước và sau tất cả các thử nghiệm, tương ứng.
Bí quyết: điều này chỉ hoạt động nếu bạn đang chạy bộ thử nghiệm và không chạy Test1 và Test2 dưới dạng các thử nghiệm JUnit riêng lẻ. Bạn đã đề cập rằng bạn đang sử dụng maven và plugin maven surefire thích chạy thử nghiệm riêng lẻ chứ không phải là một phần của bộ. Trong trường hợp này, tôi khuyên bạn nên tạo một lớp cha mà mỗi lớp thử nghiệm mở rộng. Sau đó, lớp cha chứa các phương thức @BeforeClass và @AfterClass được chú thích. Mặc dù không hoàn toàn sạch sẽ như phương pháp trên nhưng tôi nghĩ nó sẽ hiệu quả với bạn.
Đối với vấn đề với các thử nghiệm không thành công, bạn có thể đặt maven.test.error.ignore để bản dựng tiếp tục trên các thử nghiệm không thành công. Điều này không được khuyến khích như một thực hành liên tục, nhưng nó sẽ giúp bạn hoạt động cho đến khi tất cả các bài kiểm tra của bạn vượt qua. Để biết thêm chi tiết, hãy xem tài liệu về maven chắc chắn .
post-integration-test
nếu một bài kiểm tra không thành công. Xem thêm trang wiki này .