Tidak ada fase tertentu dalam Siklus proses Maven yang sesuai dengan pra dan pasca tes. Ini karena pengujian unit tidak seharusnya memerlukan lingkungan eksternal. Sepertinya yang ingin Anda lakukan bukanlah pengujian unit, melainkan pengujian integrasi, karena memerlukan lingkungan yang harus disiapkan.
Dari dokumen :
Dan ada pre-integration-test
, integration-test
dan post-integration-test
yang digunakan untuk menyiapkan, menjalankan, dan menghancurkan lingkungan pengujian.
Dengan demikian, akan lebih mudah dan jauh lebih bersih untuk melakukan ini di integration-test
fase menggunakan maven-failsafe-plugin
.
Sekarang, jika Anda benar-benar ingin menjalankannya sebagai pengujian unit, saya tidak akan menulis pembuatan/penghapusan database sebagai plugin Maven. Akan jauh lebih baik untuk membiarkan aplikasi Anda membuat database pengujian ketika dikonfigurasi dalam lingkungan pengujian. (Misalnya, jika Anda menggunakan Spring, ia memiliki banyak fasilitas untuk itu.)
Dan, jika Anda benar-benar ingin menjalankannya sebagai unit test di test
fase, dan menggunakan plugin Anda, Anda harus melewati eksekusi default maven-surefire-plugin
lalu tentukan eksekusi plugin Maven Anda yang membuat database, eksekusi baru maven-surefire-plugin
dan eksekusi plugin Maven Anda menjatuhkan database, terikat pada test
fase.
Ini berfungsi karena Maven memanggil plugin dalam urutan sebagai mereka didefinisikan dalam POM ketika mereka terikat pada fase yang sama.
Konfigurasi akan terlihat seperti:
<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>