JUnit กรณีทดสอบ @Before @BeforeClass คำอธิบายประกอบ

JUnit เป็นหน่วยที่ได้รับความนิยมมากที่สุด การทดสอบ กรอบใน Java- ขอแนะนำอย่างชัดเจนสำหรับ การทดสอบหน่วย. JUnit ไม่ต้องใช้เซิร์ฟเวอร์ในการทดสอบเว็บแอปพลิเคชัน ซึ่งทำให้กระบวนการทดสอบรวดเร็ว

JUnit กรอบงานยังช่วยให้สร้างกรณีทดสอบและข้อมูลการทดสอบได้อย่างรวดเร็วและง่ายดาย ที่ org.จูนิต แพ็คเกจประกอบด้วยอินเทอร์เฟซและคลาสมากมายสำหรับ JUnit การทดสอบ เช่น Test, Assert, After, Before ฯลฯ

ฟิกซ์เจอร์ทดสอบคืออะไร

ก่อนที่เราจะเข้าใจว่าฟิกซ์เจอร์ทดสอบคืออะไร มาศึกษาโค้ดด้านล่างกันก่อน

รหัสนี้ออกแบบมาเพื่อดำเนินการสองกรณีทดสอบในไฟล์ธรรมดา

public class OutputFileTest {
    private File output; 
    output = new File(...);
    output.delete(); 
public void testFile1(){
        //Code to verify Test Case 1
}
    output.delete();
    output = new File(...);
public void testFile2(){
        //Code to verify Test Case 2
}
 output.delete(); 
}

ปัญหาเล็กน้อยที่นี่

  • โค้ดไม่สามารถอ่านได้
  • รหัสนี้ไม่ใช่เรื่องง่ายที่จะรักษา
  • เมื่อชุดการทดสอบมีความซับซ้อน โค้ดอาจมีปัญหาเชิงตรรกะได้

เปรียบเทียบรหัสเดียวกันโดยใช้ JUnit

public class OutputFileTest		
{
    private File output; 
    @Before public void createOutputFile() 
    { 
       output = new File(...);
    }
  
	@After public void deleteOutputFile() 
    {
        output.delete(); 
    } 
     
    @Test public void testFile1() 
    {
       // code for test case objective
    } 
	@Test public void testFile2() 
    {
       // code for test case objective
    }
}

โค้ดสามารถอ่านและบำรุงรักษาได้ง่ายกว่ามาก โครงสร้างโค้ดด้านบนเป็น อุปกรณ์ทดสอบ

อุปกรณ์ทดสอบคือบริบทที่ JUnit กรณีทดสอบ วิ่ง โดยทั่วไป อุปกรณ์ทดสอบได้แก่:

  • ออบเจ็กต์หรือทรัพยากรที่พร้อมใช้งานสำหรับกรณีทดสอบใดๆ
  • กิจกรรมที่จำเป็นในการทำให้วัตถุ/ทรัพยากรเหล่านี้พร้อมใช้งาน
  • กิจกรรมเหล่านี้ได้แก่
    1. การจัดสรร (การติดตั้ง)
    2. ยกเลิกการจัดสรร (น้ำตาตก).

ติดตั้งและรื้อถอน

  • โดยปกติแล้ว มีงานที่ต้องทำซ้ำๆ ก่อนการทดสอบแต่ละกรณี ตัวอย่าง: สร้างการเชื่อมต่อฐานข้อมูล
  • ในทำนองเดียวกัน ในตอนท้ายของแต่ละกรณีทดสอบ อาจมีงานที่ทำซ้ำบางกรณี ตัวอย่าง: เพื่อล้างข้อมูลเมื่อการดำเนินการทดสอบสิ้นสุดลง
  • JUnit ให้คำอธิบายประกอบที่ช่วยในการตั้งค่าและการรื้อถอน ช่วยให้มั่นใจได้ว่าทรัพยากรจะถูกปล่อยออกมา และระบบทดสอบอยู่ในสถานะพร้อมสำหรับกรณีทดสอบถัดไป

ล้อยางขัดเหล่านี้ติดตั้งบนแกน XNUMX (มม.) ผลิตภัณฑ์นี้ถูกผลิตในหลายรูปทรง และหลากหลายเบอร์ความแน่นหนาของปริมาณอนุภาคขัดของมัน จะทำให้ท่านได้รับประสิทธิภาพสูงในการขัดและการใช้งานที่ยาวนาน JUnit คำอธิบายประกอบจะกล่าวถึงด้านล่าง -

การติดตั้ง

@ก่อน คำอธิบายประกอบใน JUnit ใช้กับวิธีการที่มี Java รหัสที่จะรันก่อนแต่ละกรณีทดสอบ คือมันทำงานก่อนการดำเนินการทดสอบแต่ละครั้ง

การรื้อถอน (โดยไม่คำนึงถึงคำตัดสิน)

@หลังจาก คำอธิบายประกอบถูกใช้ในวิธีการที่มีโค้ด Java เพื่อรันหลังจากแต่ละกรณีทดสอบ วิธีการเหล่านี้จะทำงานแม้ว่าจะมีข้อยกเว้นใดๆ เกิดขึ้นในกรณีทดสอบหรือในกรณีที่การยืนยันล้มเหลว

หมายเหตุ

  • อนุญาตให้มีคำอธิบายประกอบจำนวนเท่าใดก็ได้ตามรายการข้างต้น
  • วิธีการทั้งหมดที่มีคำอธิบายประกอบด้วย @ก่อน in JUnit จะทำงานก่อนแต่ละกรณีทดสอบ แต่อาจทำงานในลำดับใดก็ได้
  • คุณสามารถสืบทอดเมธอด @Before และ @After จากซูเปอร์คลาสได้ Execution จะเป็นดังนี้: เป็นกระบวนการดำเนินการมาตรฐานใน JUnit.
  1. ดำเนินการ JUnit @Before วิธีการในซูเปอร์คลาส
  2. ดำเนินการเมธอด @Before ในคลาสนี้
  3. ดำเนินการเมธอด @Test ในคลาสนี้
  4. ดำเนินการเมธอด @After ในคลาสนี้
  5. ดำเนินการเมธอด @After ในซูเปอร์คลาส

ตัวอย่าง: การสร้างคลาสที่มีไฟล์เป็นฟิกซ์เจอร์ทดสอบ

public class OutputFileTest		
{
    private File output; 
    @Before	public void createOutputFile() 
    { 
       output = new File(...);
    }
  
	@After public void deleteOutputFile() 
    {
        output.delete(); 
    } 
     
    @Test public void testFile1() 
    {
       // code for test case objective
    } 
	@Test public void testFile2() 
    {
       // code for test case objective
    }
}

ในตัวอย่างข้างต้น ห่วงโซ่การดำเนินการจะเป็นดังนี้-

ติดตั้งและรื้อถอน

  1. createOutputFile()
  2. ทดสอบไฟล์1()
  3. ลบไฟล์เอาท์พุต()
  4. createOutputFile()
  5. ทดสอบไฟล์2()
  6. ลบไฟล์เอาท์พุต()

อัสสัมชั:

testFile1() ทำงานก่อน testFile2()– ซึ่งไม่รับประกัน

การตั้งค่าเพียงครั้งเดียว

  • เป็นไปได้ที่จะรันเมธอดเพียงครั้งเดียวสำหรับคลาสการทดสอบทั้งหมดก่อนที่จะดำเนินการการทดสอบใดๆ และก่อนหน้าการทดสอบใดๆ @ก่อน วิธีการ
  • “การตั้งค่าเพียงครั้งเดียว” มีประโยชน์สำหรับการเริ่มเซิร์ฟเวอร์ การเปิดการสื่อสาร ฯลฯ การปิดและเปิดทรัพยากรอีกครั้งสำหรับการทดสอบแต่ละครั้งใช้เวลานาน
  • ซึ่งสามารถทำได้โดยใช้คำอธิบายประกอบ @บีฟอร์คลาส in JUnit.
@BeforeClass public static void Method_Name() {	
    // class setup code here	
 }	

รื้อลงเพียงครั้งเดียว

  • เช่นเดียวกับการตั้งค่าครั้งเดียวเท่านั้น ยังมีวิธีการล้างข้อมูลเพียงครั้งเดียวอีกด้วย มันทำงานตามวิธีกรณีทดสอบทั้งหมดและ @หลังจาก คำอธิบายประกอบได้รับการดำเนินการแล้ว
  • มีประโยชน์สำหรับการหยุดเซิร์ฟเวอร์ การปิดลิงก์การสื่อสาร ฯลฯ
  • สามารถทำได้โดยใช้ @หลังเลิกเรียน คำอธิบายประกอบ
 @AfterClass public static void Method_Name()	
 {	
    // class cleanup code here	
 }	

JUnit ห้องทดสอบ

หากเราต้องการดำเนินการทดสอบหลายรายการตามลำดับที่กำหนด สามารถทำได้โดยรวมการทดสอบทั้งหมดไว้ในที่เดียว ซึ่งเรียกว่าชุดทดสอบ รายละเอียดเพิ่มเติมเกี่ยวกับวิธีการดำเนินการชุดทดสอบและวิธีใช้ JUnit จะได้รับการคุ้มครองในเรื่องนี้ เกี่ยวกับการสอน.

นักวิ่งทดสอบ Junit

JUnit จัดเตรียมเครื่องมือสำหรับการดำเนินการกรณีทดสอบของคุณ

  • JUnitแกน คลาสใช้เพื่อดำเนินการทดสอบเหล่านี้
  • วิธีการที่เรียกว่า รันคลาส ให้บริการโดย org.junit.runner.JUnitแกน ใช้เพื่อรันคลาสทดสอบหนึ่งหรือหลายคลาส
  • ประเภทการส่งคืนของวิธีนี้คือ ผล วัตถุ (org.junit.runner.ผลลัพธ์) ซึ่งใช้ในการเข้าถึงข้อมูลเกี่ยวกับการทดสอบ ดูตัวอย่างโค้ดต่อไปนี้เพื่อความชัดเจนยิ่งขึ้น
public class Test {				
			public static void main(String[] args) {									
       		Result result = JUnitCore.runClasses(CreateAndSetName.class);					
			for (Failure failure : result.getFailures()) {							
         		System.out.println(failure.toString());					
      }		
      System.out.println(result.wasSuccessful());					
   }		
}      

ในโค้ดข้างต้น "ผลลัพธ์" วัตถุได้รับการประมวลผลเพื่อรับความล้มเหลวและผลลัพธ์ที่ประสบความสำเร็จของกรณีทดสอบที่เรากำลังดำเนินการ

ชื่อจริง JUnit โครงการ

มีความรู้พอสมควรเกี่ยวกับ SDLC, การเขียนโปรแกรม Java และพื้นฐานของ การทดสอบซอฟต์แวร์ กระบวนการช่วยในการทำความเข้าใจ JUnit โครงการ

มาทำความเข้าใจ Unit Testing โดยใช้ตัวอย่างสดกัน เราจำเป็นต้องสร้างคลาสทดสอบด้วยวิธีการทดสอบที่มีคำอธิบายประกอบ @ทดสอบ ตามที่ระบุด้านล่าง:

MyFirstClassTest.java

package guru99.JUnit;		

import static org.JUnit.Assert.*;				

import org.JUnit.Test;		

public class MyFirstClassTest {				

    @Test		
    public void myFirstMethod(){					
        String str= "JUnit is working fine";					
        assertEquals("JUnit is working fine",str);					
    }
}		

TestRunner.java

เพื่อดำเนินการตามวิธีทดสอบของเรา (ด้านบน) เราจำเป็นต้องสร้างตัวดำเนินการทดสอบ ใน test runner เราต้องเพิ่มคลาสการทดสอบเป็นพารามิเตอร์ JUnitวิธีการ runclasses() ของ Core มันจะส่งคืนผลการทดสอบ โดยขึ้นอยู่กับว่าการทดสอบนั้นผ่านหรือไม่ผ่าน

สำหรับรายละเอียดเพิ่มเติมโปรดดูโค้ดด้านล่างนี้:

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(MyFirstClassTest.class);					
			for (Failure failure : result.getFailures()) {							
              System.out.println(failure.toString());					
      }		
      System.out.println("Result=="+result.wasSuccessful());							
   }		
}      	

เอาท์พุต

เคย TestRunner.java ดำเนินการวิธีทดสอบของเราที่เราได้รับผลลัพธ์ว่าล้มเหลวหรือผ่าน โปรดดูคำอธิบายผลลัพธ์ด้านล่าง:

  1. ในตัวอย่างนี้ หลังจากดำเนินการแล้ว MyFirstClassTest.java ผ่านการทดสอบและผลลัพธ์เป็นสีเขียว
  2. หากล้มเหลวก็ควรแสดงผลเป็นสีแดงและสามารถสังเกตความล้มเหลวได้ในการติดตามความล้มเหลว ดูด้านล่าง JUnit กุย :

JUnit โปรแกรมเอาท์พุต

สรุป

  • JUnit เป็นเฟรมเวิร์กที่รองรับคำอธิบายประกอบหลายรายการเพื่อระบุวิธีการที่มีการทดสอบ
  • JUnit ให้คำอธิบายประกอบที่เรียกว่า @ทดสอบ, ซึ่งบอกถึง JUnit ว่าวิธีพับสาธารณะที่ใช้สามารถเรียกใช้เป็นกรณีทดสอบได้
  • ฟิกซ์เจอร์ทดสอบคือบริบทที่กรณีทดสอบทำงาน
  • หากต้องการดำเนินการทดสอบหลายรายการตามลำดับที่ระบุ สามารถทำได้โดยการรวมการทดสอบทั้งหมดไว้ในที่เดียว สถานที่แห่งนี้เรียกว่าเป็นห้องทดสอบ
  • JUnit จัดเตรียมเครื่องมือสำหรับดำเนินการทดสอบซึ่งเราสามารถรันกรณีทดสอบของเราที่เรียกว่า Test Runner