Tôi muốn viết một lớp BaseTest
mà chỉ đơn giản cung cấp một "phổ biến phương pháp setUp()
" cho tất cả các lớp con mở rộng:JUnit thử nghiệm cơ sở Auto Setup
public class BaseTest {
@Before
public void setUp() {
System.out.println("setUp() was called!");
// Doesn't really matter what this is doing...
EnvironmentConfigurator.configureEnvForTesting();
}
}
Sau đó:
public class WidgetTest extends BaseTest {
@Test
public void test1() {
fail();
}
@Test
public void test2() {
fail();
}
}
Vì vậy, lý tưởng, mỗi khi một phương thức phân lớp được chú thích bởi @Test
được thực hiện, JUnit trước tiên sẽ gọi phương thức BaseTest#setUp()
, thực hiện bất cứ điều gì (không quan trọng). Có lẽ nó đặt lại một số trạng thái mô phỏng thành một giá trị ban đầu để mỗi thử nghiệm có thể bắt đầu trên một "slate sạch", vv Một lần nữa, không thực sự quan trọng.
Thật không may khi tôi chạy mã này, tôi chỉ nhìn thấy setUp() was called!
in ra màn hình lần, vì vậy rõ ràng BaseTest
không phải là "gói" @Test
phương pháp của tôi theo cách tôi muốn. Có bất kì cách nào để đạt được điều này không? Cảm ơn trước!
Cảm ơn @Bedwyr Humphreys (+1) - Tôi đã thay đổi các câu lệnh 'fail()' thành dấu chấm phẩy (để buộc các phương thức thử nghiệm vượt qua) và có, phương thức 'setUp()' cha được gọi hai lần. Vì vậy, phải có một cái gì đó về việc sử dụng thiết lập này kết hợp với các trường hợp thử nghiệm thất bại gây ra phương thức 'setUp()' chỉ được gọi một lần. Cảm ơn một lần nữa. – IAmYourFaja
Tôi chạy nó với thất bại() (trong Eclipse) và nó vẫn được gọi hai lần – blank
Lạ ... cũng không quan trọng, việc loại bỏ 'fail()' s làm việc vì vậy tôi tốt để đi. Cảm ơn một lần nữa. – IAmYourFaja