Không có giai đoạn cụ thể nào trong Vòng đời của Maven tương ứng với trước và sau kiểm tra. Điều này là do các bài kiểm tra đơn vị không được cho là yêu cầu môi trường bên ngoài. Có vẻ như những gì bạn muốn làm không phải là kiểm tra đơn vị mà thay vào đó là kiểm tra tích hợp, vì chúng yêu cầu một môi trường được thiết lập.
Từ tài liệu :
Và có pre-integration-test
, integration-test
và post-integration-test
được sử dụng để thiết lập, chạy và phá hủy môi trường thử nghiệm.
Như vậy, sẽ dễ dàng và gọn gàng hơn rất nhiều để thực hiện việc này trong integration-test
giai đoạn sử dụng maven-failsafe-plugin
.
Bây giờ, nếu bạn thực sự muốn chạy nó dưới dạng các bài kiểm tra đơn vị, tôi sẽ không viết việc tạo / xóa cơ sở dữ liệu dưới dạng một plugin Maven. Sẽ tốt hơn rất nhiều nếu để ứng dụng của bạn tạo cơ sở dữ liệu thử nghiệm khi nó được cấu hình trong môi trường thử nghiệm. (Ví dụ:nếu bạn đang sử dụng Spring, nó có rất nhiều tiện ích cho việc đó.)
Và, nếu bạn thực sự muốn chạy nó dưới dạng các bài kiểm tra đơn vị trong test
giai đoạn, và bằng cách sử dụng plugin của mình, bạn sẽ phải bỏ qua quá trình thực thi mặc định của maven-surefire-plugin
và sau đó xác định một quá trình thực thi plugin Maven của bạn tạo cơ sở dữ liệu, một quá trình thực thi mới của maven-surefire-plugin
và việc thực thi plugin Maven của bạn làm rơi cơ sở dữ liệu, bị ràng buộc với test
giai đoạn.
Điều này hoạt động vì Maven gọi các plugin theo thứ tự như chúng được định nghĩa trong POM khi chúng bị ràng buộc vào cùng một giai đoạn.
Cấu hình sẽ giống như sau:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<executions>
<execution>
<id>default-test</id>
<configuration>
<skip>true</skip>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId><!-- group id of your plugin --></groupId>
<artifactId><!-- artifact id of your plugin --></artifactId>
<version><!-- version --></version>
<executions>
<execution>
<id>create-db</id>
<phase>test</phase>
<goals>
<goal><!-- your goal --></goal>
</goals>
<!-- add configuration -->
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<executions>
<execution>
<id>test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId><!-- group id of your plugin --></groupId>
<artifactId><!-- artifact id of your plugin --></artifactId>
<version><!-- version --></version>
<executions>
<execution>
<id>drop-db</id>
<phase>test</phase>
<goals>
<goal><!-- your goal --></goal>
</goals>
<!-- add configuration -->
</execution>
</executions>
</plugin>