Saya menggunakan maven dan maven-failsafe-plugin untuk memulai jetty selama fase siklus hidup pengujian integrasi. Saya kemudian menjalankan sejumlah tes junit (*IT.java) terhadap aplikasi web saya yang sedang berjalan. Ini berfungsi seperti yang diharapkan.
Namun, saya ingin terhubung ke database pengujian untuk pengujian integrasi saya. Saya menyimpan urlnya di
${basedir}/src/test/resources/jdbc.properties
Saat plugin jetty berjalan (jetty:run), ia menggunakan
${basedir}/src/main/resources/jdbc.propertes
alih-alih. Saya mencoba mengkonfigurasi ulang plugin jetty melalui properti classesDirectory untuk digunakan
${project.build.testOutputDirectory}
tetapi direktori test-classes tidak memiliki kelas proyek terkompilasi saya yang sebenarnya, serta sumber daya yang disimpan di dalamnya
${basedir}/src/main/resources
catatan: pasti menambahkan sumber daya pengujian ke classpath, diikuti oleh sumber daya utama, sehingga apa pun yang ditemukan di keduanya akan menggunakan versi pengujian karena ditemukan pertama kali di classpath.
Adakah ide tentang cara menyiapkan ini dengan benar?
Terima kasih!
Sunting:
Tampaknya ada properti konfigurasi di jetty-plugin untuk menangani hal ini:
- testClassesDirectory : Direktori yang berisi kelas pengujian yang dihasilkan.
- useTestClasspath : Jika benar, dependensi pengujian akan diprioritaskan pada classpath runtime.
Sayangnya, mereka tidak berhasil.
Inilah bagian yang relevan dari pom.xml saya:
<testResources> <testResource> <filtering>true</filtering> <directory>src/test/resources</directory> </testResource> </testResources> <plugins> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> <version>6.1.26</version> <configuration> <contextPath>/</contextPath> <stopPort>8005</stopPort> <stopKey>STOP</stopKey> </configuration> <executions> <execution> <id>start-jetty</id> <phase>pre-integration-test</phase> <goals> <goal>run</goal> </goals> <configuration> <daemon>true</daemon> <useTestClasspath>true</useTestClasspath> <testClassesDirectory>${project.build.testOutputDirectory}</testClassesDirectory> </configuration> </execution> <execution> <id>stop-jetty</id> <phase>post-integration-test</phase> <goals> <goal>stop</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-failsafe-plugin</artifactId> <version>2.6</version> <executions> <execution> <goals> <goal>integration-test</goal> <goal>verify</goal> </goals> </execution> </executions> <configuration> <useFile>false</useFile> </configuration> </plugin>