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 ดังต่อไปนี้
- assertTrue (เงื่อนไข)
- assertFalse (เงื่อนไข)
ที่นี่เงื่อนไขเป็นค่าบูลีน
วัตถุว่าง
หากคุณต้องการตรวจสอบค่าเริ่มต้นของวัตถุ/ตัวแปร คุณมีวิธีการดังต่อไปนี้:
- assertNull (วัตถุ)
- assertNotNull (วัตถุ)
นี่คือวัตถุคือ Java วัตถุ เช่น assertNull (จริง);
เหมือนกัน
หากคุณต้องการตรวจสอบว่าวัตถุนั้นเหมือนกันหรือไม่ (เช่น การเปรียบเทียบการอ้างอิงสองรายการกับวัตถุ Java เดียวกัน) หรือต่างกัน
- assertSame (ที่คาดหวัง, จริง), มันจะกลับมาเป็นจริงถ้า คาดหวัง == จริง
- 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) มาวิเคราะห์ผลลัพธ์ที่คาดหวังทีละขั้นตอน:
พิจารณาข้อความยืนยันทั้งหมดทีละรายการ:
- assertEquals(string1,string2);
ตอนนี้เปรียบเทียบ string1=” Junit” กับ string2=” Junit” ด้วยเมธอด equals ของคลาส object โดยแทนที่เมธอด assertEquals จากเมธอด java.lang.Object.equals() :
string1.equals(string2)=> คืนค่าจริง
ดังนั้น assertEquals(string1,string2) จะกลับมา จริง.
- assertSame (string3, string4);
ฟังก์ชั่น “assertSame()” คือการตรวจสอบว่าวัตถุทั้งสองอ้างอิงถึงวัตถุเดียวกัน
เนื่องจาก string3=”test” และ string4=”test” หมายความว่าทั้ง string3 และ string4 เป็นประเภทเดียวกัน ดังนั้น assertSame(string3, string4) จะกลับมา จริง.
- assertNotSame(string1, string3);
ฟังก์ชั่น “assertNotSame()” คือการตรวจสอบว่าวัตถุทั้งสองไม่ได้อ้างถึงวัตถุเดียวกัน
เนื่องจาก string1=”Junit” และ string3=”test” หมายถึงว่า string1 และ string3 นั้นเป็นประเภทที่แตกต่างกัน ดังนั้น assertNotSame(string1, string3) จะส่งกลับ จริง.
- assertNotNull(string1);
ฟังก์ชั่น “assertNotNull()” คือการตรวจสอบว่าวัตถุไม่เป็นโมฆะ
เนื่องจาก string1= “Junit” ซึ่งเป็นค่าที่ไม่ใช่ค่า null ดังนั้น assertNotNull(string1) จะส่งกลับ จริง.
- assertNull(string5);
ฟังก์ชั่น “assertNull()” คือการตรวจสอบว่าวัตถุนั้นเป็นโมฆะ
เนื่องจาก string5= null ซึ่งเป็นค่า null ดังนั้น assertNull(string5) จะกลับมา จริง.
- ยืนยัน True (ตัวแปร 1
ฟังก์ชั่น “assertTrue()” คือการตรวจสอบว่าเงื่อนไขเป็นจริงหรือไม่
เนื่องจากตัวแปร1=1 และตัวแปร2=2 ซึ่งแสดงว่าตัวแปร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- นอกจากนี้คุณได้เห็นตัวอย่างของคำสั่งยืนยันแล้ว ซึ่งแสดงว่าหากคำสั่ง assert ทั้งหมดคืนค่าเป็นจริง GUI การทดสอบจะส่งกลับผลลัพธ์จริง และหากการทดสอบเดี่ยวล้มเหลวก็จะส่งคืนผลลัพธ์ที่ล้มเหลว