วิธีที่ง่ายที่สุด (เช่นเดียวกับรหัสใหม่ที่ต้องการน้อยที่สุด) ในการดำเนินการนี้คือเรียกใช้การทดสอบเป็นการทดสอบแบบพารามีทริก (ใส่คำอธิบายประกอบด้วย @RunWith(Parameterized.class)
และเพิ่มวิธีการเพื่อระบุพารามิเตอร์ว่าง 10 พารามิเตอร์) ด้วยวิธีนี้เฟรมเวิร์กจะทำการทดสอบ 10 ครั้ง
การทดสอบนี้จะต้องเป็นการทดสอบเพียงอย่างเดียวในชั้นเรียนหรือวิธีการทดสอบทั้งหมดที่ดีกว่าควรจะต้องรัน 10 ครั้งในชั้นเรียน
นี่คือตัวอย่าง:
@RunWith(Parameterized.class)
public class RunTenTimes {
@Parameterized.Parameters
public static Object[][] data() {
return new Object[10][0];
}
public RunTenTimes() {
}
@Test
public void runsTenTimes() {
System.out.println("run");
}
}
จากข้างต้นเป็นไปได้ที่จะทำด้วยตัวสร้างที่ไม่มีพารามิเตอร์ แต่ฉันไม่แน่ใจว่าผู้เขียนเฟรมเวิร์กตั้งใจไว้อย่างนั้นหรือว่าจะพังในอนาคต
หากคุณใช้นักวิ่งของคุณเองคุณสามารถให้นักวิ่งทำการทดสอบ 10 ครั้ง หากคุณใช้นักวิ่งของบุคคลที่สามจากนั้นด้วย 4.7 คุณสามารถใช้@Rule
คำอธิบายประกอบใหม่และใช้MethodRule
อินเทอร์เฟซเพื่อรับคำสั่งและดำเนินการ 10 ครั้งในการวนซ้ำ ข้อเสียในปัจจุบันของแนวทางนี้คือ@Before
และ@After
เรียกใช้เพียงครั้งเดียว สิ่งนี้มีแนวโน้มที่จะเปลี่ยนแปลงใน JUnit เวอร์ชันถัดไป ( @Before
จะทำงานตามหลัง@Rule
) แต่ไม่ว่าคุณจะดำเนินการกับอินสแตนซ์เดียวกันของวัตถุ (สิ่งที่ไม่เป็นความจริงสำหรับParameterized
นักวิ่ง) สิ่งนี้จะถือว่านักวิ่งทุกคนที่คุณกำลังวิ่งอยู่ในชั้นเรียนนั้นจดจำ@Rule
คำอธิบายประกอบได้อย่างถูกต้อง นั่นเป็นเพียงกรณีที่มอบหมายให้นักวิ่ง JUnit
หากคุณกำลังวิ่งด้วยนักวิ่งที่กำหนดเองที่ไม่รู้จัก@Rule
คำอธิบายประกอบแสดงว่าคุณติดอยู่กับการต้องเขียนนักวิ่งของคุณเองที่มอบหมายให้กับนักวิ่งคนนั้นอย่างเหมาะสมและวิ่ง 10 ครั้ง
โปรดทราบว่ามีวิธีอื่นในการแก้ปัญหานี้ (เช่น Theories runner) แต่ทั้งหมดนี้ต้องใช้นักวิ่ง น่าเสียดายที่ปัจจุบัน JUnit ไม่รองรับเลเยอร์ของนักวิ่ง นั่นคือนักวิ่งที่ล่ามโซ่นักวิ่งคนอื่น ๆ