Junit Assert และ AssertEquals พร้อมตัวอย่าง

Junit Assert คืออะไร?

Assert เป็นวิธีที่มีประโยชน์ในการกำหนดสถานะผ่านหรือไม่ผ่านของกรณีทดสอบ วิธีการ assert ได้รับการจัดทำโดยคลาส org.junit.Assert ซึ่งขยายคลาส java.lang.Object

การยืนยันมีหลายประเภท เช่น Boolean, Null, Identical เป็นต้น

Junit มีคลาสชื่อ Assert ซึ่งมีวิธีการยืนยันมากมายที่เป็นประโยชน์ในการเขียนกรณีทดสอบและตรวจจับความล้มเหลวในการทดสอบ

วิธีการยืนยันมีให้โดยชั้นเรียน org.junit.ยืนยัน ซึ่งขยายออกไป java.lang.Object ชั้นเรียน

JUnit ยืนยันวิธีการ

บูลีน

หากคุณต้องการทดสอบเงื่อนไขบูลีน (จริงหรือเท็จ) คุณสามารถใช้เมธอด assert ดังต่อไปนี้

  1. assertTrue (เงื่อนไข)
  2. assertFalse (เงื่อนไข)

ที่นี่เงื่อนไขเป็นค่าบูลีน

วัตถุว่าง

หากคุณต้องการตรวจสอบค่าเริ่มต้นของวัตถุ/ตัวแปร คุณมีวิธีการดังต่อไปนี้:

  1. assertNull (วัตถุ)
  2. assertNotNull (วัตถุ)

นี่คือวัตถุคือ Java วัตถุ เช่น assertNull (จริง);

เหมือนกัน

หากคุณต้องการตรวจสอบว่าวัตถุนั้นเหมือนกันหรือไม่ (เช่น การเปรียบเทียบการอ้างอิงสองรายการกับวัตถุ Java เดียวกัน) หรือต่างกัน

  1. assertSame (ที่คาดหวัง, จริง), มันจะกลับมาเป็นจริงถ้า คาดหวัง == จริง
  2. assertNotSame (ที่คาดหวัง, จริง)

ยืนยันเท่ากับ

หากคุณต้องการทดสอบความเท่ากันของวัตถุสองชิ้น คุณมีวิธีการดังต่อไปนี้

  • assertEquals (ที่คาดหวัง, จริง)

มันจะคืนค่าเป็นจริงหาก: คาดหวังเท่ากับ (ตามจริง) คืนค่าเป็นจริง

ยืนยันอาร์เรย์เท่ากับ

หากคุณต้องการทดสอบความเท่าเทียมของอาร์เรย์ คุณสามารถใช้วิธีการดังต่อไปนี้ได้:

  • assertArrayEquals (คาดหวัง, จริง)

ต้องใช้วิธีข้างต้นหากอาร์เรย์มีความยาวเท่ากันสำหรับค่าที่ถูกต้องแต่ละค่า iคุณสามารถตรวจสอบได้ตามด้านล่างนี้:

  • assertEquals (คาดหวัง [i], จริง [i])
  • assertArrayEquals (คาดหวัง [i], จริง [i])

ข้อความล้มเหลว

หากคุณต้องการที่จะโยนข้อผิดพลาดในการยืนยันคุณมี ล้มเหลว() ซึ่งส่งผลให้มีการตัดสินว่าล้มเหลวเสมอ

  • ล้มเหลว(ข้อความ);

คุณสามารถมีวิธีการยืนยันเพิ่มเติมได้ เชือก พารามิเตอร์เป็นพารามิเตอร์แรก สตริงนี้จะถูกผนวกในข้อความแสดงความล้มเหลวหากการยืนยันล้มเหลว เช่น ล้มเหลว (ข้อความ) สามารถเขียนเป็น

  • assertEquals (ข้อความ, คาดหวัง, จริง)

JUnit ยืนยันเท่ากับ

คุณมี ยืนยันเท่ากับ (ก, ข) ซึ่งขึ้นอยู่กับ เท่ากับ () วิธีการของคลาส Object

  • ในที่นี้ก็จะประเมินเป็น. ก.เท่ากับ( ข )
  • ในที่นี้คลาสที่อยู่ระหว่างการทดสอบใช้เพื่อกำหนดความสัมพันธ์ความเท่าเทียมกันที่เหมาะสม
  • หากคลาสไม่แทนที่ไฟล์ เท่ากับ () วิธีการของ วัตถุ class มันจะได้รับพฤติกรรมเริ่มต้นของ เท่ากับ () วิธีการ เช่น เอกลักษณ์ของวัตถุ

If a และ b เป็นพื้นฐานเช่น ไบต์, int, บูลฯลฯ จากนั้นจะดำเนินการต่อไปนี้สำหรับ assertEquals(a,b) :

a และ b จะถูกแปลงเป็นประเภทออบเจ็กต์ wrapper ที่เทียบเท่ากัน (ไบต์,จำนวนเต็ม, บูลีนฯลฯ) จากนั้น ก.เท่ากับ( ข ) จะได้รับการประเมิน

ตัวอย่าง: พิจารณาสตริงที่กล่าวถึงด้านล่างซึ่งมีค่าเหมือนกัน มาทดสอบโดยใช้ assertTrue กัน

String obj1="Junit";
String obj2="Junit";
assertEquals(obj1,obj2);

คำสั่ง assert ข้างต้นจะคืนค่าเป็นจริงเมื่อ obj1.equals(obj2) ส่งคืนค่าจริง

การยืนยันจุดลอยตัว

เมื่อคุณต้องการเปรียบเทียบประเภทจุดลอยตัว (เช่น สอง or ลอย) คุณต้องมีพารามิเตอร์ที่จำเป็นเพิ่มเติม รูปสามเหลี่ยม เพื่อหลีกเลี่ยงปัญหาข้อผิดพลาดในการปัดเศษขณะทำการเปรียบเทียบจุดลอยตัว

การยืนยันประเมินตามที่ระบุด้านล่าง:

  • Math.abs( คาดไว้ – จริง ) <= เดลต้า

ตัวอย่างเช่น:

ยืนยันเท่ากับ (กDoubleคุณค่าอีกประการหนึ่งDoubleค่า 0.001 )

JUnit ยืนยันตัวอย่าง

ตัวอย่างด้านล่างสาธิตวิธีการยืนยันเงื่อนไขโดยใช้ JUnit ยืนยันวิธีการ

มาสร้างคลาสทดสอบง่ายๆ ชื่อ การทดสอบ Junit4AssertionTest.java และคลาสนักวิ่งทดสอบ TestRunner.java.

คุณจะสร้างตัวแปรและข้อความยืนยันที่สำคัญขึ้นมา JUnit.

ในตัวอย่างนี้ คุณจะดำเนินการคลาสทดสอบของเราโดยใช้ TestRunner.java

ขั้นตอน 1) ให้สร้างคลาสที่ครอบคลุมวิธีการ assert statement ที่สำคัญทั้งหมดใน junit:

การทดสอบ Junit4AssertionTest.java

package guru99.junit;		

import static org.junit.Assert.*;				
import org.junit.Test;		


public class Junit4AssertionTest {				

    @Test		
    public void testAssert(){					
        		
        //Variable declaration		
        String string1="Junit";					
        String string2="Junit";					
        String string3="test";					
        String string4="test";					
        String string5=null;					
        int variable1=1;					
        int	variable2=2;					
        int[] airethematicArrary1 = { 1, 2, 3 };					
        int[] airethematicArrary2 = { 1, 2, 3 };					
        		
        //Assert statements		
        assertEquals(string1,string2);					
        assertSame(string3, string4);					
        assertNotSame(string1, string3);					
        assertNotNull(string1);			
        assertNull(string5);			
        assertTrue(variable1<variable2);					
        assertArrayEquals(airethematicArrary1, airethematicArrary2);					
    }		
}		

ขั้นตอน 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(Junit4AssertionTest.class);					
			for (Failure failure : result.getFailures()) {							
         System.out.println(failure.toString());					
      }		
      System.out.println("Result=="+result.wasSuccessful());							
   }		
}      

ขั้นตอน 3) มาวิเคราะห์ผลลัพธ์ที่คาดหวังทีละขั้นตอน:

พิจารณาข้อความยืนยันทั้งหมดทีละรายการ:

  1. assertEquals(string1,string2);

ตอนนี้เปรียบเทียบ string1=” Junit” กับ string2=” Junit” ด้วยเมธอด equals ของคลาส object โดยแทนที่เมธอด assertEquals จากเมธอด java.lang.Object.equals() :

string1.equals(string2)=> คืนค่าจริง

ดังนั้น assertEquals(string1,string2) จะกลับมา จริง.

  1. assertSame (string3, string4);

ฟังก์ชั่น “assertSame()” คือการตรวจสอบว่าวัตถุทั้งสองอ้างอิงถึงวัตถุเดียวกัน

เนื่องจาก string3=”test” และ string4=”test” หมายความว่าทั้ง string3 และ string4 เป็นประเภทเดียวกัน ดังนั้น assertSame(string3, string4) จะกลับมา จริง.

  1. assertNotSame(string1, string3);

ฟังก์ชั่น “assertNotSame()” คือการตรวจสอบว่าวัตถุทั้งสองไม่ได้อ้างถึงวัตถุเดียวกัน

เนื่องจาก string1=”Junit” และ string3=”test” หมายถึงว่า string1 และ string3 นั้นเป็นประเภทที่แตกต่างกัน ดังนั้น assertNotSame(string1, string3) จะส่งกลับ จริง.

  1. assertNotNull(string1);

ฟังก์ชั่น “assertNotNull()” คือการตรวจสอบว่าวัตถุไม่เป็นโมฆะ

เนื่องจาก string1= “Junit” ซึ่งเป็นค่าที่ไม่ใช่ค่า null ดังนั้น assertNotNull(string1) จะส่งกลับ จริง.

  1. assertNull(string5);

ฟังก์ชั่น “assertNull()” คือการตรวจสอบว่าวัตถุนั้นเป็นโมฆะ

เนื่องจาก string5= null ซึ่งเป็นค่า null ดังนั้น assertNull(string5) จะกลับมา จริง.

  1. ยืนยัน True (ตัวแปร 1

ฟังก์ชั่น “assertTrue()” คือการตรวจสอบว่าเงื่อนไขเป็นจริงหรือไม่

เนื่องจากตัวแปร1=1 และตัวแปร2=2 ซึ่งแสดงว่าตัวแปร1 จริง.

  1. assertArrayEquals (airthematicArrary1, airethematicArrary2);

ฟังก์ชัน "assertArrayEquals()" คือการตรวจสอบว่าอาร์เรย์ที่คาดหวังและอาร์เรย์ผลลัพธ์เท่ากัน ประเภทของอาร์เรย์อาจเป็น int, long, short, char, byte หรือ java.lang.Object

เนื่องจาก airethematicArrary1 = { 1, 2, 3 } และ airethematicArrary2 = { 1, 2, 3 } ซึ่งแสดงว่าทั้งสองอาร์เรย์เท่ากันดังนั้น assertArrayEquals(airethematicArrary1, airethematicArrary2) จะกลับมา จริง

เนื่องจากข้อความยืนยันทั้งเจ็ดข้อของ การทดสอบ Junit4AssertionTest.java คลาสส่งคืนค่าจริง ดังนั้นเมื่อคุณรันคลาสการยืนยันการทดสอบ มันจะส่งคืนการทดสอบที่สำเร็จ (ดูผลลัพธ์ด้านล่าง)

ขั้นตอน 4) คลิกขวาที่ Junit4AssertionTest.java แล้วคลิกที่ runAs->JUnit- คุณจะเห็นผลลัพธ์ตามที่ระบุด้านล่าง:

JUnit ยืนยันตัวอย่าง

ผลลัพธ์ข้างต้นแสดงผลการทดสอบที่สำเร็จตามที่คาดไว้

สรุป

ในบทช่วยสอนนี้ คุณได้เรียนรู้วิธีการยืนยันที่สำคัญทุกประเภทที่จัดทำโดย JUnit- นอกจากนี้คุณได้เห็นตัวอย่างของคำสั่งยืนยันแล้ว ซึ่งแสดงว่าหากคำสั่ง assert ทั้งหมดคืนค่าเป็นจริง GUI การทดสอบจะส่งกลับผลลัพธ์จริง และหากการทดสอบเดี่ยวล้มเหลวก็จะส่งคืนผลลัพธ์ที่ล้มเหลว