Khi sử dụng phương pháp này bên dưới, bằng cách thiết lập jUnit with Suites. Chúng tôi đã gặp sự cố khi tất cả @BeforeClass trong mọi Lớp kiểm tra sẽ được thực thi trước khi bất kỳ thử nghiệm nào bắt đầu thực thi. (Đối với mỗi tệp TestClass của @BeforeClass chạy, sau khi chúng đã thực thi, nó bắt đầu thực thi tệp MyTest.class đầu tiên @Test)JUnit 4 @BeforeClass & @AfterClass khi sử dụng Suites
Điều này sẽ khiến chúng tôi phân bổ nhiều tài nguyên và bộ nhớ. Suy nghĩ của tôi là nó phải sai, không phải mỗi @BeforeClass chỉ chạy trước khi lớp thi thực tế được thực hiện, không phải khi Suite được bắt đầu?
@RunWith(Suite.class)
@Suite.SuiteClasses({ MyTests.class, Mytests2.class, n1, n2, n })
public class AllTests {
// empty
}
public class MyTests { // no extends here
@BeforeClass
public static void setUpOnce() throws InterruptedException {
...
@Test
...
public class MyTests2 { // no extends here
@BeforeClass
public static void setUpOnce() throws InterruptedException {
...
@Test
...
Họ thực hiện trước khi kiểm tra từng lớp học, hay tất cả đều được thực hiện duy nhất trước khi là người đầu tiên (nhưng sau đó thứ hai là chạy mà không cần chạy tất cả @BeforeClass lần nữa)? Sau này có vẻ OK khi @BeforeClass được chạy trước các phương thức @Test trong thử nghiệm đó. Số lượng bộ nhớ sẽ không thay đổi tôi giả sử, trừ khi bạn dọn dẹp sau mỗi bài kiểm tra của mỗi lớp (và những điều này cũng chỉ xảy ra sau khi toàn bộ bộ được hoàn thành). –
Điều tôi nhận được ngay bây giờ là mỗi @BeforeClass được chạy trước tiên. @BeforeClass (Mytests) @BeforeClass (Mytests2) @Test (MyTests) @Test (MyTests2) Tại quan điểm của tôi, điều này là không đúng. Sửa lỗi cho tôi nếu tôi sai, nhưng một số thứ phải được thiết lập sai để gây ra sự cố này. –