ฉันใช้ maven และ maven-failsafe-plugin เพื่อเริ่มต้นท่าเทียบเรือในระหว่างขั้นตอนวงจรการใช้งานการทดสอบการผสานรวม จากนั้น ฉันดำเนินการทดสอบ Junit (*IT.java) จำนวนหนึ่งกับเว็บแอปที่ทำงานอยู่ สิ่งนี้ทำงานได้ตามที่คาดไว้
อย่างไรก็ตาม ฉันต้องการเชื่อมต่อกับฐานข้อมูลทดสอบสำหรับการทดสอบการรวมระบบของฉัน ฉันกำลังเก็บ url ของมันเอาไว้
${basedir}/src/test/resources/jdbc.properties
เมื่อปลั๊กอินท่าเทียบเรือทำงาน (ท่าเทียบเรือ: เรียกใช้) จะใช้
${basedir}/src/main/resources/jdbc.propertes
แทน. ฉันพยายามกำหนดค่าปลั๊กอิน Jetty ใหม่ผ่านคุณสมบัติ classesDirectory ที่จะใช้
${project.build.testOutputDirectory}
แต่ไดเร็กทอรี test-classes ขาดคลาสโปรเจ็กต์ที่คอมไพล์ตามจริงของฉัน รวมถึงทรัพยากรที่เก็บไว้
${basedir}/src/main/resources
หมายเหตุ: Surefire จะเพิ่มทรัพยากรการทดสอบลงใน classpath ตามด้วยทรัพยากรหลัก ดังนั้นสิ่งใดก็ตามที่พบในทั้งสองจะใช้เวอร์ชันทดสอบเนื่องจากพบก่อนใน classpath
มีความคิดเห็นเกี่ยวกับวิธีตั้งค่านี้อย่างถูกต้องหรือไม่
ขอบคุณ!
แก้ไข:
ดูเหมือนว่าจะมีคุณสมบัติการกำหนดค่าบน jetty-plugin เพื่อจัดการกับสิ่งนี้:
- testClassesDirectory : ไดเร็กทอรีที่มีคลาสการทดสอบที่สร้างขึ้น
- useTestClasspath : หากเป็นจริง การขึ้นต่อกันของการทดสอบจะถูกใส่ไว้เป็นอันดับแรกบนคลาสพาธรันไทม์
น่าเสียดายที่มันไม่ได้ผล
นี่คือส่วนที่เกี่ยวข้องของ pom.xml ของฉัน:
<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>