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 ข้างต้นโดยละเอียด:

  1. พิจารณาวิธี 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()) จะต้องกลับมาเป็นจริง
  • เป็นผลให้กรณีทดสอบจะ ส่ง.
  1. พิจารณาวิธี 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)คำอธิบายประกอบใช้เพื่อบังคับใช้การหมดเวลาในกรณีทดสอบ

  1. พิจารณาวิธี 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” ด้วยเหตุนี้ การทดสอบจะดำเนินการโดยมีข้อยกเว้น

เมื่อผ่านกรณีทดสอบทั้งหมดแล้ว จึงส่งผลให้ดำเนินการทดสอบได้สำเร็จ

ผลลัพธ์ที่แท้จริง

เนื่องจากมีกรณีทดสอบสามกรณีในตัวอย่างข้างต้น กรณีทดสอบทั้งหมดจะถูกดำเนินการทีละกรณี ดูผลลัพธ์ด้านล่าง:

JUnit ตัวอย่างคำอธิบายประกอบ
JUnit ตัวอย่างคำอธิบายประกอบ

ดูคำสั่งการพิมพ์ด้านล่างซึ่งสามารถเห็นได้บนคอนโซล:

ใช้ @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@หลัง

    @หลังเลิกเรียน

    @ทดสอบ

    @ไม่สนใจ