JUnit บทช่วยสอนคำอธิบายประกอบพร้อมตัวอย่าง: @Test และ @After คืออะไร
ความหมายของ JUnit คำอธิบายประกอบ?
JUnit คำอธิบายประกอบ เป็นรูปแบบพิเศษของ meta-data ทางวากยสัมพันธ์ที่สามารถเพิ่มได้ Java ซอร์สโค้ดเพื่อให้โค้ดอ่านง่ายและมีโครงสร้างที่ดีขึ้น สามารถใส่คำอธิบายตัวแปร พารามิเตอร์ แพ็กเกจ วิธีการ และคลาสได้ คำอธิบายได้รับการแนะนำใน Junit4 ซึ่งทำให้... Java โค้ดจะอ่านง่ายขึ้นและเรียบง่ายขึ้น นี่คือความแตกต่างที่สำคัญระหว่าง Junit3 และ Junit4 ตรงที่ Junit4 เป็นแบบใช้คำอธิบายประกอบ
ด้วยความรู้เกี่ยวกับคำอธิบายประกอบใน Junit5 คุณจะสามารถเรียนรู้และนำไปใช้งานได้อย่างง่ายดาย JUnit ทดสอบ. ด้านล่างนี้คือสิ่งสำคัญและใช้บ่อย JUnit รายการคำอธิบายประกอบ:
S.No. | คำอธิบายประกอบ | Descriptไอออน |
---|---|---|
1. | @ทดสอบ | คำอธิบายประกอบนี้เป็นการแทนที่ org.junit.TestCase ซึ่งระบุว่าวิธี public void ที่แนบมาสามารถเรียกใช้เป็นกรณีทดสอบได้ |
2. | @ก่อน | คำอธิบายประกอบนี้ถูกใช้หากคุณต้องการดำเนินการคำสั่งบางอย่าง เช่น เงื่อนไขเบื้องต้น ก่อนกรณีทดสอบแต่ละกรณี |
3. | @บีฟอร์คลาส | คำอธิบายประกอบนี้ใช้ถ้าคุณต้องการดำเนินการคำสั่งบางคำสั่งก่อนที่กรณีการทดสอบทั้งหมด เช่น การเชื่อมต่อการทดสอบจะต้องดำเนินการก่อนกรณีการทดสอบทั้งหมด |
4. | @หลังจาก | คำอธิบายประกอบนี้สามารถใช้ได้หากคุณต้องการดำเนินการคำสั่งบางคำสั่งหลังจากนั้น กรณีทดสอบ เช่น การรีเซ็ตตัวแปร การลบไฟล์ชั่วคราว ตัวแปร เป็นต้น |
5. | @หลังเลิกเรียน | คำอธิบายประกอบนี้สามารถใช้ได้หากคุณต้องการดำเนินการคำสั่งบางคำสั่งหลังจากกรณีการทดสอบทั้งหมด เช่น การปล่อยทรัพยากรหลังจากดำเนินการกรณีทดสอบทั้งหมด |
6. | @ละเว้น | คำอธิบายประกอบนี้สามารถใช้ได้หากคุณต้องการละเว้นคำสั่งบางคำสั่งระหว่างการทดสอบ เช่น การปิดใช้งานกรณีทดสอบบางกรณีระหว่างการทดสอบ |
7. | @ ทดสอบ (หมดเวลา = 500) | คำอธิบายประกอบนี้สามารถใช้ได้หากคุณต้องการตั้งค่าการหมดเวลาระหว่างการดำเนินการทดสอบ เช่น หากคุณทำงานภายใต้ SLA (ข้อตกลงระดับการบริการ) บางอย่าง และการทดสอบจำเป็นต้องเสร็จสิ้นภายในเวลาที่กำหนด |
8. | @Test (คาดหวัง = IllegalArgumentException.class) | คุณสามารถใช้คำอธิบายประกอบนี้หากคุณต้องการจัดการข้อยกเว้นบางอย่างระหว่างการดำเนินการทดสอบ เช่น หากคุณต้องการตรวจสอบว่ามีวิธีการใดวิธีการหนึ่งกำลังสร้างข้อยกเว้นที่ระบุหรือไม่ |
JUnit ตัวอย่างคำอธิบายประกอบ
มาสร้างคลาสที่ครอบคลุมเรื่องสำคัญกันเถอะ JUnit คำอธิบายประกอบด้วยคำสั่งการพิมพ์อย่างง่ายและดำเนินการกับคลาสตัวทดสอบ:
ขั้นตอน 1) พิจารณาคลาส Java ด้านล่างซึ่งมีวิธีการต่างๆ ที่แนบมากับคำอธิบายประกอบข้างต้น:
ตัวอย่าง JunitAnnotations.java
package guru99.junit; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import java.util.ArrayList; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; public class JunitAnnotationsExample { private ArrayList<String> list; @BeforeClass public static void m1() { System.out.println("Using @BeforeClass , executed before all test cases "); } @Before public void m2() { list = new ArrayList<String>(); System.out.println("Using @Before annotations ,executed before each test cases "); } @AfterClass public static void m3() { System.out.println("Using @AfterClass ,executed after all test cases"); } @After public void m4() { list.clear(); System.out.println("Using @After ,executed after each test cases"); } @Test public void m5() { list.add("test"); assertFalse(list.isEmpty()); assertEquals(1, list.size()); } @Ignore public void m6() { System.out.println("Using @Ignore , this execution is ignored"); } @Test(timeout = 10) public void m7() { System.out.println("Using @Test(timeout),it can be used to enforce timeout in JUnit4 test case"); } @Test(expected = NoSuchMethodException.class) public void m8() { System.out.println("Using @Test(expected) ,it will check for specified exception during its execution"); } }
ขั้นตอน 2) มาสร้างคลาสนักวิ่งทดสอบเพื่อดำเนินการทดสอบข้างต้นกันดีกว่า:
TestRunner.java
package guru99.junit; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.notification.Failure; public class TestRunner { public static void main(String[] args) { Result result = JUnitCore.runClasses(JunitAnnotationsExample.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println("Result=="+result.wasSuccessful()); } }
ผลลัพธ์ที่คาดหวัง
- กรณีทดสอบทั้งหมดจะถูกดำเนินการทีละรายการ และคำสั่งการพิมพ์ทั้งหมดสามารถดูได้บนคอนโซล
- ตามที่กล่าวไว้ในตารางด้านบน @Before คำอธิบายประกอบใน JUnit, @BeforeClass [ method m1() และ m2() ] จะถูกดำเนินการก่อนแต่ละกรณีและก่อนการทดสอบทั้งหมดตามลำดับ
- ในทำนองเดียวกัน @After in JUnit, @afterClass (เมธอด m3() และ m4()) จะถูกดำเนินการหลังจากแต่ละกรณีและหลังกรณีทดสอบทั้งหมดตามลำดับ @ignore (เมธอด m6()) จะถือเป็นการเพิกเฉยต่อการทดสอบ
มาวิเคราะห์กรณีทดสอบที่ใช้ในคลาส Java ข้างต้นโดยละเอียด:
- พิจารณาวิธี m5() ตามที่ระบุด้านล่าง:
@Test public void m5() { list.add("test"); assertFalse(list.isEmpty()); assertEquals(1, list.size()); }
ในวิธีการข้างต้นขณะที่คุณกำลังเพิ่มสตริงในตัวแปร “รายการ” ดังนั้น
- รายการ.isEmpty() จะกลับมาเป็นเท็จ
- assertFalse (รายการ isEmpty ()) จะต้องกลับมาเป็นจริง
- เป็นผลให้กรณีทดสอบจะ ส่ง.
เนื่องจากคุณได้เพิ่มเพียงสตริงเดียวในรายการ ดังนั้นขนาดจึงเป็นหนึ่งรายการ
- รายการ.ขนาด() ต้องส่งคืนค่า int เป็น “1”
- So assertEquals(1, list.size()) จะต้องกลับมาเป็นจริง
- เป็นผลให้กรณีทดสอบจะ ส่ง.
- พิจารณาวิธี m7() ตามที่ระบุด้านล่าง:
@Test(timeout = 10) public void m7() { System.out.println("Using @Test(timeout),it can be used to enforce timeout in JUnit4 test case"); }
ตามที่กล่าวไว้ข้างต้น @ ทดสอบ (หมดเวลา = 10)คำอธิบายประกอบใช้เพื่อบังคับใช้การหมดเวลาในกรณีทดสอบ
- พิจารณาวิธี m8() ตามที่ระบุด้านล่าง:
@Test(expected = NoSuchMethodException.class) public void m8() { System.out.println("Using @Test(expected) ,it will check for specified exception during its execution"); }
ตามที่กล่าวไว้ข้างต้น @ทดสอบ(คาดหวัง) จะตรวจสอบข้อยกเว้นที่ระบุในระหว่างการดำเนินการ ดังนั้นเมธอด m8() จะส่ง “No Such Method Exception” ด้วยเหตุนี้ การทดสอบจะดำเนินการโดยมีข้อยกเว้น
เมื่อผ่านกรณีทดสอบทั้งหมดแล้ว จึงส่งผลให้ดำเนินการทดสอบได้สำเร็จ
ผลลัพธ์ที่แท้จริง
เนื่องจากมีกรณีทดสอบสามกรณีในตัวอย่างข้างต้น กรณีทดสอบทั้งหมดจะถูกดำเนินการทีละกรณี ดูผลลัพธ์ด้านล่าง:
ดูคำสั่งการพิมพ์ด้านล่างซึ่งสามารถเห็นได้บนคอนโซล:
ใช้ @BeforeClass ดำเนินการก่อนกรณีทดสอบทั้งหมด
การใช้ @Before คำอธิบายประกอบ ดำเนินการก่อนแต่ละกรณีทดสอบ
ใช้ @After ดำเนินการหลังจากแต่ละกรณีทดสอบ
การใช้ @Before คำอธิบายประกอบ ดำเนินการก่อนแต่ละกรณีทดสอบ
การใช้ @Test(timeout) สามารถใช้เพื่อบังคับใช้การหมดเวลาได้ JUnit4 กรณีทดสอบ
ใช้ @After ดำเนินการหลังจากแต่ละกรณีทดสอบ
การใช้ @Before คำอธิบายประกอบ ดำเนินการก่อนแต่ละกรณีทดสอบ
เมื่อใช้ @Test(expected) มันจะตรวจสอบข้อยกเว้นที่ระบุระหว่างการดำเนินการ
ใช้ @After ดำเนินการหลังจากแต่ละกรณีทดสอบ
ใช้ @AfterClass ดำเนินการหลังจากกรณีทดสอบทั้งหมด
JUnit ยืนยันคลาส
คลาสนี้มีวิธีการยืนยันที่เป็นประโยชน์มากมายในการเขียนกรณีทดสอบ หากข้อความยืนยันทั้งหมดผ่านไป ผลการทดสอบจะสำเร็จ หากคำสั่งยืนยันใด ๆ ล้มเหลว ผลการทดสอบจะล้มเหลว
ดังที่คุณเห็นก่อนหน้านี้ ตารางด้านล่างอธิบายวิธีการยืนยันและคำอธิบายที่สำคัญ:
S.No. | วิธี | Descriptไอออน |
---|---|---|
1. | เป็นโมฆะ assertEquals (บูลีนที่คาดหวัง, บูลีนจริง) | จะตรวจสอบว่าค่าสองค่าเท่ากันกับวิธีการเท่ากับของคลาส Object หรือไม่ |
2. | เป็นโมฆะ assertFalse (เงื่อนไขบูลีน) | ฟังก์ชั่นคือการตรวจสอบว่าเงื่อนไขเป็นเท็จ |
3. | เป็นโมฆะ assertNotNull (วัตถุวัตถุ) | ฟังก์ชั่น “assertNotNull” คือการตรวจสอบว่าวัตถุไม่เป็นโมฆะ |
4. | เป็นโมฆะ assertNull (วัตถุวัตถุ) | ฟังก์ชั่น "assertNull" คือการตรวจสอบว่าวัตถุนั้นเป็นโมฆะ |
5. | เป็นโมฆะ assertTrue (เงื่อนไขบูลีน) | ฟังก์ชั่น assertTrue คือการตรวจสอบว่าเงื่อนไขเป็นจริง |
6. | เป็นโมฆะล้มเหลว () | หากคุณต้องการส่งข้อผิดพลาดในการยืนยัน คุณต้องมี failed() ซึ่งจะส่งผลให้ตัดสินว่าล้มเหลวเสมอ |
7. | เป็นโมฆะ assertSame ([ข้อความสตริง] | ฟังก์ชั่น "assertSame" คือการตรวจสอบว่าวัตถุทั้งสองอ้างอิงถึงวัตถุเดียวกัน |
8. | เป็นโมฆะ assertNotSame ([ข้อความสตริง] | ฟังก์ชั่น "assertNotSame" คือการตรวจสอบว่าทั้งสองวัตถุไม่ได้อ้างถึงวัตถุเดียวกัน |
JUnit คลาสกรณีทดสอบ
หากต้องการรันการทดสอบหลายรายการ คลาส TestCase จะพร้อมใช้งานใน org.junit.กรณีทดสอบ แพคเกจ @Test คำอธิบายประกอบบอก JUnit ว่าวิธีโมฆะสาธารณะ (กรณีทดสอบที่นี่) ที่แนบมานั้นสามารถเรียกใช้เป็นกรณีทดสอบได้
ตารางด้านล่างแสดงวิธีการสำคัญบางอย่างที่มีอยู่ใน org.junit.กรณีทดสอบ ระดับ:
S.No. | วิธี | Descriptไอออน |
---|---|---|
1. | int นับ TestCases () | วิธีการนี้ใช้ในการนับจำนวนกรณีทดสอบที่ดำเนินการโดย วิ่ง (TestResult tr) วิธี |
2. | TestResult สร้างผลลัพธ์ () | วิธีการนี้ใช้ในการสร้าง ผลการทดสอบ วัตถุ. |
3. | สตริง getName() | เมธอดนี้ส่งคืนสตริงซึ่งไม่ใช่อะไรเลยนอกจากก กรณีทดสอบ. |
4. | เรียกใช้ผลการทดสอบ () | วิธีการนี้ใช้เพื่อดำเนินการทดสอบซึ่งส่งกลับค่า ผลการทดสอบ วัตถุ |
5. | ถือเป็นโมฆะ (ผลการทดสอบ) | วิธีการนี้ใช้ในการดำเนินการทดสอบที่มี ผลการทดสอบ วัตถุที่ไม่ส่งคืนสิ่งใด |
6. | เป็นโมฆะ setName (ชื่อสตริง) | วิธีการนี้ใช้ในการตั้งชื่อของ กรณีทดสอบ |
7. | การตั้งค่าเป็นโมฆะ() | วิธีการนี้ใช้ในการเขียนรหัสการเชื่อมโยงทรัพยากร เช่น สร้างการเชื่อมต่อฐานข้อมูล |
8. | โมฆะการฉีกขาด () | วิธีนี้ใช้ในการเขียนโค้ดการปล่อยทรัพยากร เช่น การปล่อยการเชื่อมต่อฐานข้อมูลหลังจากดำเนินการธุรกรรม |
JUnit คลาสผลการทดสอบ
เมื่อคุณดำเนินการทดสอบ มันจะส่งคืนผลลัพธ์ (ในรูปแบบของ ผลการทดสอบ วัตถุ). วัตถุ TestResult นี้สามารถใช้เพื่อวิเคราะห์วัตถุผลลัพธ์ได้ ผลการทดสอบนี้อาจล้มเหลวหรือสำเร็จก็ได้
ดูตารางด้านล่างสำหรับวิธีการสำคัญที่ใช้ในคลาส org.junit.TestResult:
S.No. | วิธี | Descriptไอออน |
---|---|---|
1. | เป็นโมฆะ addError (ทดสอบการทดสอบ Throwable t) | วิธีการนี้ใช้ถ้าคุณต้องการเพิ่มข้อผิดพลาดในการทดสอบ |
2. | addFailure เป็นโมฆะ (ทดสอบการทดสอบ AssertionFailedError t) | วิธีการนี้ใช้ถ้าคุณต้องการเพิ่มความล้มเหลวในรายการความล้มเหลว |
3. | โมฆะ endTest (ทดสอบทดสอบ) | วิธีการนี้ใช้เพื่อแจ้งว่าทำการทดสอบแล้ว (เสร็จสิ้น) |
4. | int errorCount () | วิธีการนี้ใช้เพื่อรับข้อผิดพลาดที่ตรวจพบระหว่างการทดสอบ |
5. | การแจกแจง ข้อผิดพลาด() | วิธีนี้จะส่งคืนการรวบรวม (การแจงนับที่นี่) ของข้อผิดพลาด |
6. | int ความล้มเหลวนับ() | วิธีการนี้ใช้เพื่อรับจำนวนข้อผิดพลาดที่ตรวจพบระหว่างการทดสอบ |
7. | การรันเป็นโมฆะ (การทดสอบ TestCase) | วิธีการนี้ใช้เพื่อดำเนินการกรณีทดสอบ |
8. | int runCount () | วิธีนี้จะนับการทดสอบที่ดำเนินการเท่านั้น |
9. | โมฆะ startTest (ทดสอบการทดสอบ) | วิธีการนี้ใช้เพื่อแจ้งว่าการทดสอบเริ่มต้นแล้ว |
10. | โมฆะหยุด () | วิธีนี้ใช้เพื่อทดสอบการทำงานที่จะหยุด |
JUnit คลาสชุดทดสอบ
หากคุณต้องการดำเนินการทดสอบหลายรายการตามลำดับที่ระบุ สามารถทำได้โดยการรวมการทดสอบทั้งหมดไว้ในที่เดียว สถานที่แห่งนี้เรียกว่าเป็นห้องทดสอบ
ดูตารางด้านล่างสำหรับวิธีการสำคัญที่ใช้ใน org.junit.ชุดทดสอบ ระดับ:
S.No. | วิธี | Descriptไอออน |
---|---|---|
1. | เป็นโมฆะ addTest (ทดสอบการทดสอบ) | วิธีการนี้ใช้ถ้าคุณต้องการเพิ่มการทดสอบลงในชุดโปรแกรม |
2. | เป็นโมฆะ addTestSuite (Class คลาสทดสอบ) | วิธีการนี้ใช้ถ้าคุณต้องการระบุคลาสในขณะที่เพิ่มการทดสอบลงในชุดโปรแกรม |
3. | int นับ TestCases () | วิธีการนี้ใช้ถ้าคุณต้องการนับจำนวนกรณีทดสอบ |
4. | สตริง getName() | วิธีนี้ใช้เพื่อรับชื่อของชุดทดสอบ |
5. | ถือเป็นโมฆะ (ผลการทดสอบ) | วิธีนี้ใช้เพื่อดำเนินการทดสอบและรวบรวมผลการทดสอบ ผลการทดสอบ วัตถุ. |
6. | เป็นโมฆะ setName (ชื่อสตริง) | วิธีการนี้ใช้ในการตั้งชื่อของ ชุดทดสอบ. |
7. | ทดสอบ testAt (ดัชนี int) | วิธีการนี้ใช้ถ้าคุณต้องการส่งคืนการทดสอบตามดัชนีที่กำหนด |
8. | int testCount () | วิธีการนี้ใช้ถ้าคุณต้องการส่งคืนการทดสอบจำนวนหนึ่งในชุด |
9. | คำเตือนการทดสอบแบบคงที่ (ข้อความสตริง) | วิธีนี้จะส่งคืนการทดสอบซึ่งจะล้มเหลวและบันทึกข้อความเตือน |
สรุป
- JUnit จัดเตรียม API แบบพกพาซึ่งมีคลาสที่สำคัญทั้งหมดและ Selenium คำอธิบายประกอบที่เป็นประโยชน์ในการเขียนแบบทดสอบหน่วย
- คลาสที่มีประโยชน์มากในขณะที่เขียนกรณีทดสอบ
- org.junit.ยืนยัน
- org.junit.กรณีทดสอบ
- org.junit.ผลการทดสอบ
- org.junit.ชุดทดสอบ
- ที่สำคัญและใช้บ่อย JUnit รายการคำอธิบายประกอบ@Before@BeforeClass@หลัง
@หลังเลิกเรียน
@ทดสอบ
@ไม่สนใจ