คุณสามารถแยกได้อย่างง่ายดายโดยใช้หมวดหมู่ JUnit และ Maven
สิ่งนี้แสดงให้เห็นอย่างสั้น ๆ ด้านล่างโดยการแยกหน่วยและการทดสอบการรวม
กำหนดอินเทอร์เฟซ Marker
ขั้นตอนแรกในการจัดกลุ่มการทดสอบโดยใช้หมวดหมู่คือการสร้างอินเทอร์เฟซเครื่องหมาย
อินเทอร์เฟซนี้จะใช้เพื่อทำเครื่องหมายการทดสอบทั้งหมดที่คุณต้องการเรียกใช้เป็นการทดสอบการรวม
public interface IntegrationTest {}
ทำเครื่องหมายชั้นเรียนทดสอบของคุณ
เพิ่มคำอธิบายประกอบหมวดหมู่ที่ด้านบนสุดของชั้นเรียนทดสอบของคุณ ใช้ชื่ออินเทอร์เฟซใหม่ของคุณ
import org.junit.experimental.categories.Category;
@Category(IntegrationTest.class)
public class ExampleIntegrationTest{
@Test
public void longRunningServiceTest() throws Exception {
}
}
กำหนดค่าการทดสอบหน่วย Maven
ความสวยงามของโซลูชันนี้คือไม่มีอะไรเปลี่ยนแปลงไปจากด้านการทดสอบหน่วยของสิ่งต่างๆ
เราเพียงแค่เพิ่มการกำหนดค่าบางอย่างให้กับปลั๊กอิน maven surefire เพื่อให้ละเว้นการทดสอบการรวมใด ๆ
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.11</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>2.12</version>
</dependency>
</dependencies>
<configuration>
<includes>
<include>**/*.class</include>
</includes>
<excludedGroups>com.test.annotation.type.IntegrationTest</excludedGroups>
</configuration>
</plugin>
เมื่อคุณทำการทดสอบ mvn clean การทดสอบหน่วยที่ไม่มีเครื่องหมายของคุณเท่านั้นที่จะทำงาน
กำหนดค่าการทดสอบการรวม Maven
อีกครั้งการกำหนดค่าสำหรับสิ่งนี้ง่ายมาก
หากต้องการเรียกใช้เฉพาะการทดสอบการรวมให้ใช้สิ่งนี้:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.11</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>2.12</version>
</dependency>
</dependencies>
<configuration>
<groups>com.test.annotation.type.IntegrationTest</groups>
</configuration>
</plugin>
หากคุณรวมสิ่งนี้ไว้ในโปรไฟล์ด้วย id IT
คุณสามารถเรียกใช้เฉพาะการทดสอบอย่างรวดเร็วโดยใช้mvn clean install
ไฟล์. เพื่อให้ทำงานได้เพียงบูรณาการ / mvn clean install -P IT
การทดสอบช้าใช้
แต่ส่วนใหญ่มักจะคุณจะต้องการที่จะเรียกใช้การทดสอบได้อย่างรวดเร็วโดยการเริ่มต้นและทุก-P IT
การทดสอบด้วย หากเป็นเช่นนั้นคุณต้องใช้เคล็ดลับ:
<profiles>
<profile>
<id>IT</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludedGroups>java.io.Serializable</excludedGroups> <!-- An empty element doesn't overwrite, so I'm using an interface here which no one will ever use -->
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
java.io.Serializable
ที่คุณสามารถดูฉันไม่รวมการทดสอบที่มีการกำกับด้วย สิ่งนี้จำเป็นเนื่องจากโปรไฟล์จะสืบทอดการกำหนดค่าเริ่มต้นของปลั๊กอิน Surefire ดังนั้นแม้ว่าคุณจะพูด<excludedGroups/>
หรือ<excludedGroups></excludedGroups>
ค่าก็ตามcom.test.annotation.type.IntegrationTest
นี้ก็ตาม
คุณยังไม่สามารถใช้ none
เนื่องจากต้องเป็นอินเทอร์เฟซบน classpath (Maven จะตรวจสอบสิ่งนี้)
หมายเหตุ:
- การพึ่งพา
surefire-junit47
มีความจำเป็นก็ต่อเมื่อ Maven ไม่เปลี่ยนไปใช้ตัววิ่ง JUnit 4 โดยอัตโนมัติ การใช้groups
หรือexcludedGroups
องค์ประกอบควรเรียกสวิตช์ ดูที่นี่ .
- โค้ดด้านบนส่วนใหญ่นำมาจากเอกสารสำหรับปลั๊กอิน Maven Failsafe ดูส่วน "การใช้หมวดหมู่ JUnit" ในหน้านี้
- ในระหว่างการทดสอบของฉันฉันพบว่าสิ่งนี้ใช้ได้แม้กระทั่งเมื่อคุณใช้
@RunWith()
คำอธิบายประกอบเพื่อเรียกใช้ห้องชุดหรือการทดสอบตามฤดูใบไม้ผลิ