Tôi có một bộ kiểm tra cần một cơ sở dữ liệu để thực thi. Tôi muốn tạo cơ sở dữ liệu khi bắt đầu thực hiện và xóa nó ở cuối.
Từ maven tôi cũng đã thêm RunListener vào plugin maven-surefire và hoạt động tốt. Và tôi cũng đã thêm biến thuộc tính hệ thống có tên là ismaven. Khi tôi thực hiện kiểm tra từ maven biến này được khởi tạo nhưng khi tôi thực thi các kiểm tra từ Eclipse, biến này là null (tôi truy cập biến với System.getProperty).
<configuration>
<properties>
<property>
<name>listener</name>
<value>com.mycompany.MyRunListener</value>
</property>
</properties>
<systemPropertyVariables>
<ismaven>true</ismaven>
</systemPropertyVariables>
</configuration>
Tất cả thử nghiệm cơ sở dữ liệu của tôi kế thừa từ lớp có phương thức @BeforeClass và @AfterClass. Các phương thức này kiểm tra xem thử nghiệm đang được thực thi bởi Maven hay bởi Eclipse kiểm tra giá trị của thuộc tính ismaven. Nếu thử nghiệm đang được thực thi bởi maven, thuộc tính ismaven có giá trị và chúng hoạt động. Nhưng là thử nghiệm đã được thực hiện bởi Eclipse, biến ismaven là null và họ bắt đầu (@BeforeClass) hoặc dừng (@AfterClass) cơ sở dữ liệu:
@BeforeClass
public static void checkIfStartDatabase() {
String ismaven = System.getProperty("ismaven");
// If it is not maven, start the database
if (ismaven == null) {
startDatabase();
}
}
@AfterClass
public static void checkIfStopDatabase() {
String ismaven = System.getProperty("ismaven");
// If it is not maven, stop the database
if (ismaven == null) {
stopDatabase();
}
}
Giải pháp này không giải quyết được 100% của bạn nhưng nếu bạn thực hiện nó, bạn có thể thực hiện (và gỡ rối) tất cả các bài kiểm tra của một lớp JUnit bằng Eclipse và bạn cũng có thể thực hiện tất cả các bài kiểm tra của dự án của bạn bằng Maven. sau khi thực hiện tất cả các bài kiểm tra của bạn.
Nguồn
2014-10-03 08:20:10
Đây không phải là chính xác những gì tôi tìm kiếm, bởi vì tôi không muốn tăng độ phức tạp của việc thực hiện thử nghiệm để ghi nhật ký. Tôi muốn thêm việc ghi nhật ký bên ngoài các thử nghiệm, nhưng giải pháp là tốt nhất cho đến nay và kết quả ở cuối là như mong muốn. Tôi đánh dấu câu trả lời này là giải pháp. –