ใช่มันเป็นไปได้ที่จะเรียกใช้วิธีการตั้งค่าและฉีกวิธีก่อนและหลังการทดสอบในชุดทดสอบได้อย่างน่าเชื่อถือ ให้ฉันสาธิตในรหัส:
package com.test;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
@RunWith(Suite.class)
@SuiteClasses({Test1.class, Test2.class})
public class TestSuite {
@BeforeClass
public static void setUp() {
System.out.println("setting up");
}
@AfterClass
public static void tearDown() {
System.out.println("tearing down");
}
}
ดังนั้นTest1
ชั้นเรียนของคุณจะมีลักษณะดังนี้:
package com.test;
import org.junit.Test;
public class Test1 {
@Test
public void test1() {
System.out.println("test1");
}
}
... และคุณสามารถจินตนาการว่ามันTest2
ดูคล้ายกัน หากคุณวิ่งTestSuite
คุณจะได้รับ:
setting up
test1
test2
tearing down
ดังนั้นคุณจะเห็นว่าการตั้งค่า / การฉีกขาดจะทำงานก่อนและหลังการทดสอบทั้งหมดตามลำดับเท่านั้น
สิ่งที่จับได้: จะใช้ได้เฉพาะเมื่อคุณใช้ชุดทดสอบและไม่ได้เรียกใช้ Test1 และ Test2 เป็นการทดสอบ JUnit แต่ละรายการ คุณบอกว่าคุณใช้ maven และปลั๊กอิน maven surefire ชอบเรียกใช้การทดสอบทีละรายการไม่ใช่ส่วนหนึ่งของชุด ในกรณีนี้ฉันขอแนะนำให้สร้างซูเปอร์คลาสที่แต่ละคลาสทดสอบขยายออกไป จากนั้นซุปเปอร์คลาสจะมีเมธอด @BeforeClass และ @AfterClass ที่มีคำอธิบายประกอบ แม้ว่าจะไม่สะอาดเท่าวิธีการข้างต้น แต่ฉันคิดว่ามันจะได้ผลสำหรับคุณ
สำหรับปัญหาเกี่ยวกับการทดสอบที่ล้มเหลวคุณสามารถตั้งค่า maven.test.error.ignore เพื่อให้การสร้างดำเนินต่อไปในการทดสอบที่ล้มเหลว ไม่แนะนำให้ใช้เป็นแบบฝึกหัดต่อเนื่อง แต่ควรทำให้คุณทำงานได้จนกว่าการทดสอบทั้งหมดจะผ่าน สำหรับรายละเอียดเพิ่มเติมโปรดดูที่เอกสาร Maven แหง
post-integration-test
หากการทดสอบล้มเหลว ดูหน้าวิกินี้ด้วย