บทช่วยสอนนี้อธิบายวิธีละเว้นกรณีทดสอบใน JUnit พร้อมตัวอย่าง คุณจะได้เรียนรู้การใช้ @Ignore ใน JUnit 4 & @Disabled Annotation ใน JUnit 5:
ในบทช่วยสอนก่อนหน้านี้ เราต้องเข้าใจว่า API ที่เรียกว่า Annotation คืออะไร ทำหน้าที่อะไร และยังได้เห็นตัวอย่างพื้นฐานเกี่ยวกับวิธีใช้คำอธิบายประกอบวงจรชีวิต ลำดับความสำคัญ ค้างไว้เมื่อดำเนินการกรณีทดสอบ
ลองอธิบายสถานการณ์เมื่อเรา ต้องการ ไม่ เรียกใช้หรือ กำลัง ไม่ ควร เรียกใช้กรณีทดสอบทั้งหมด เราจะเรียนรู้ที่จะเพิกเฉยกรณีทดสอบใน JUnit
JUnit ละเว้นกรณีทดสอบ
อาจมีกรณีทดสอบบางกรณีที่ไม่ได้เรียกใช้เนื่องจากอาจไม่ เกี่ยวข้องกับการเปลี่ยนแปลงโค้ดบางอย่าง หรือโค้ดสำหรับกรณีทดสอบอาจยังอยู่ระหว่างการพัฒนา ดังนั้นเราจึงหลีกเลี่ยงการเรียกใช้โค้ดเหล่านี้
ในกรณีเช่นนี้ เราอาจต้องเรียกใช้ชุดของกรณีทดสอบโดยข้ามบางกรณีไป . ดังนั้น อะไรคือสิ่งที่ JUnit 4 และ JUnit 5 มอบให้เราเพื่อให้เราสามารถเรียกใช้กรณีทดสอบเพียงไม่กี่กรณีโดยที่เพิกเฉยหรือปิดการใช้งาน หรือเรียกว่า 'ข้าม' กรณีทดสอบบางกรณี?3
โชคดีที่เรามีคำอธิบายประกอบ @Ignore สำหรับ JUnit 4 เพื่อข้ามกรณีทดสอบ ในขณะที่ @Disabled คำอธิบายประกอบสำหรับ JUnit 5 ให้ทำเช่นเดียวกัน
JUnit 4 – @Ignore Annotation
- สามารถใช้คำอธิบายประกอบ JUnit 4 @Ignore สำหรับวิธีการทดสอบเพื่อข้ามการดำเนินการ ในกรณีนี้,คุณต้องใช้ @Ignore กับ @Test คำอธิบายประกอบสำหรับวิธีการทดสอบที่คุณต้องการข้าม
- คำอธิบายประกอบนี้สามารถนำไปใช้กับคลาสทดสอบได้ เพื่อข้ามกรณีทดสอบทั้งหมดภายใต้คลาส ในกรณีนี้ คุณต้องใช้ @Ignore ที่ระดับชั้นเรียน
โค้ดต้องการแพ็กเกจ org.junit.Ignore เพื่อนำเข้าเพื่อให้ @Ignore ทำงาน มาสาธิตวิธีการข้ามวิธีการทดสอบในการทดสอบ JUnit 4 เราจะแก้ไข JUnitProgram.java เพื่อข้ามวิธี testcase แรก
ข้อมูลโค้ดคือ:
@Ignore @Test public void test_JUnit1() { System.out.println("This is the testcase test_JUnit1() in this class"); } @Test public void test_JUnit2() { System.out.println("This is the testcase test_JUnit2() in this class"); } @Test public void test_JUnit3() { System.out.println("This is the testcase test_JUnit3() in this class"); }
ในการดำเนินการของไฟล์คลาส test_JUnit1() ถูกข้ามระหว่างการดำเนินการ นอกจากนี้ เมธอดที่มีคำอธิบายประกอบด้วย @Ignore และเมธอดทดสอบอื่นๆ ทั้งหมดจะทำงานตามที่คาดไว้
จำนวนการรันที่เป็นผลลัพธ์แสดงกรณีทดสอบ 3/3 รายการ และกรณีทดสอบ 1 รายการแสดงว่าข้ามไป จำนวนการรันแสดงเป็น 3/3 เนื่องจากแม้แต่กรณีทดสอบที่ข้ามไปก็ยังพยายามดำเนินการ
ภาพหน้าจอด้านล่างของหน้าต่างคอนโซลก็พิสูจน์ให้เห็นเช่นเดียวกัน
3
@Ignore คำอธิบายประกอบพร้อมพารามิเตอร์เหตุผล
มีรูปแบบที่แตกต่างจากคำอธิบายประกอบ @Ignore ด้วย คำอธิบายประกอบใช้อาร์กิวเมนต์เดียวที่มีค่าสตริงซึ่งเป็นเหตุผลในการข้ามการทดสอบ
เรามาสาธิตรูปแบบของคำอธิบายประกอบ @Ignore นี้กัน
ข้อมูลโค้ดมีดังนี้ :
@Ignore("the testcase is under development") @Test public void test_JUnit1() { System.out.println("This is the testcase test_JUnit1() in this class"); }
หน้าต่างคอนโซลแสดงผลลัพธ์เหมือนเดิมโดยไม่มีเหตุผลที่ส่งไปยังคำอธิบายประกอบ @Ignore
ตอนนี้ ให้เราดูว่าการทดสอบทั้งหมดเป็นอย่างไรที่อยู่ในชั้นเรียนอาจถูกปิดใช้งาน ตอนนี้เราจะอัปเดตคำอธิบายประกอบ @Ignore ที่ระดับคลาสสำหรับ JUnitProgram.java
ข้อมูลโค้ดมีดังต่อไปนี้:
import org.junit.AfterClass; @Ignore("the testcase is under development") public class JUnitProgram { @BeforeClass public static void preClass() { System.out.println("This is the preClass() method that runs one time before the class"); } @Before public void setUp() { System.out.println("_______________________________________________________\n"); System.out.println("This is the setUp() method that runs before each testcase"); } @Test public void test_JUnit1() { System.out.println("This is the testcase test_JUnit1() in this class"); }
ดำเนินการหลังไฟล์คลาส คอนโซล แสดง ไม่มีเลย และ เรียกใช้ นับ ใต้แท็บ JUnit แสดง 1 คลาสที่ถูกข้ามจาก 1 คลาส .
ด้านล่างคือภาพหน้าจอของหน้าต่างคอนโซล:
JUnit 5 – @Disabled Annotation
คำอธิบายประกอบ @Disabled ใน JUnit 5 ทำงานคล้ายกับ @Ignore คำอธิบายประกอบใน JUnit 4
- คุณสามารถปิดใช้งานหรือข้ามการดำเนินการสำหรับวิธีการทดสอบหรือกลุ่มการทดสอบได้โดยใช้คำอธิบายประกอบที่ระดับการทดสอบ
- หรือข้ามการทดสอบทั้งหมดได้โดยใช้คำอธิบายประกอบ @Disabled ในระดับชั้นเรียนแทนที่จะใช้กับระดับวิธีการทดสอบ
เช่นเดียวกับ @Ignore เหตุผลก็สามารถส่งผ่านได้เช่นกัน สำหรับ @Disabled เพื่อให้นักพัฒนาซอฟต์แวร์หรือนักวิเคราะห์ธุรกิจทราบว่าเหตุใดกรณีทดสอบหนึ่งๆ จึงถูกข้ามไป พารามิเตอร์ยังคงเป็นทางเลือกเช่นเดียวกับในกรณีของ @Ignore
( หมายเหตุ: เราจะหลีกเลี่ยงการแสดงคำอธิบายประกอบ @Disabled ผ่านโค้ดจริงเพื่อหลีกเลี่ยงการทำซ้ำเนื่องจากเป็นไปตาม รูปแบบที่แน่นอน @Ignore ตามมาใน JUnit 4.)
ข้อแตกต่างเดียวที่คุณจะต้องสังเกตในกรณีของ @Ignore Vs @Disabled คือเมื่อมีการใช้คำอธิบายประกอบที่ ระดับคลาส หลังการดำเนินการของไฟล์คลาส JUnitจำนวนการเรียกใช้ในกรณีของ JUnit 4 แสดง 1/1 คลาสที่ถูกข้ามไป
ดังนั้นจึงมีการจัดเตรียม การนับคลาสที่ถูกข้าม ในขณะที่ในกรณีของ JUnit 5 แสดงว่า 3/3 กรณีทดสอบถูกข้ามไป เนื่องจาก วิธีทดสอบสามวิธีถูกข้ามไป จากวิธีทดสอบทั้งหมดสามวิธีในชั้นเรียน
ดังนั้น บน การมองเห็นจำนวนกรณีทดสอบที่ถูกข้ามไป , JUnit 5 ทำงานได้ ดีกว่า เล็กน้อยเมื่อเปรียบเทียบกับ JUnit 4
สรุป
ในบทช่วยสอนนี้ เราได้เรียนรู้ว่าสถานการณ์ใดบ้างที่เราอาจต้องข้ามการดำเนินการของกรณีทดสอบบางกรณี เรายังได้เรียนรู้วิธีข้ามกรณีทดสอบบางอย่างทั้งใน JUnit 4 และ JUnit 5