Junit Assert และ AssertEquals พร้อมตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
JUnit คำสั่ง Assert และ AssertEquals ใช้ในการตรวจสอบว่ากรณีทดสอบผ่านหรือไม่ผ่าน โดยการเปรียบเทียบค่าที่คาดหวังกับค่าที่ได้จริง เอกสารนี้จะอธิบายวิธีการ Assert ที่มีอยู่ใน org.junit.Assert รวมถึงการตรวจสอบค่าบูลีน ค่าว่าง เอกลักษณ์ ความเท่าเทียมกัน และอาร์เรย์ พร้อมตัวอย่างการทำงานที่สมบูรณ์
Junit Assert คืออะไร?
Assert เป็นเมธอดที่มีประโยชน์ในการตรวจสอบสถานะว่าผ่านหรือล้มเหลวของกรณีทดสอบ เมธอด assert มีให้โดยคลาส org.junit.Assert ซึ่งสืบทอดมาจากคลาส java.lang.Object
มีการยืนยันหลายประเภท เช่น บูลีน, ค่าว่าง, เหมือนกัน เป็นต้น
JUnit มีคลาสชื่อ Assert ซึ่งมีเมธอดตรวจสอบมากมายที่เป็นประโยชน์ในการเขียนกรณีทดสอบและตรวจจับความล้มเหลวในการทดสอบ
วิธีการยืนยันมีให้โดยชั้นเรียน org.junit.ยืนยันซึ่งเป็นการขยายออกไป java.lang.Object ชั้นเรียน
JUnit ยืนยันวิธีการ
บูลีน
หากคุณต้องการทดสอบเงื่อนไขแบบบูลีน (จริงหรือเท็จ) คุณสามารถใช้วิธีการตรวจสอบ (assert) ต่อไปนี้ได้:
- assertTrue (เงื่อนไข)
- assertFalse (เงื่อนไข)
ที่นี่เงื่อนไขเป็นค่าบูลีน
วัตถุว่าง
หากคุณต้องการตรวจสอบค่าเริ่มต้นของวัตถุ/ตัวแปร คุณมีวิธีการดังต่อไปนี้:
- assertNull (วัตถุ)
- assertNotNull (วัตถุ)
วัตถุในที่นี้คือ Java วัตถุ, เช่น assertNull (จริง);
เหมือนกัน
หากคุณต้องการตรวจสอบว่าวัตถุนั้นเหมือนกันหรือไม่ (เช่น การเปรียบเทียบการอ้างอิงสองรายการไปยังวัตถุเดียวกัน) Java วัตถุ) หรือแตกต่างกัน:
- assertSame(expected, actual) — จะส่งคืนค่าจริงหาก คาดหวัง == จริง.
- assertNotSame (ที่คาดหวัง, จริง)
ยืนยันเท่ากับ
หากคุณต้องการทดสอบความเท่ากันของวัตถุสองชิ้น คุณสามารถใช้วิธีการต่อไปนี้:
- assertEquals (ที่คาดหวัง, จริง)
มันจะกลับมาเป็นจริงถ้า ค่าที่คาดหวังเท่ากับค่าจริง คืนค่าเป็นจริง
ยืนยันอาร์เรย์เท่ากับ
หากคุณต้องการทดสอบความเท่ากันของอาร์เรย์ คุณสามารถใช้วิธีต่อไปนี้:
- assertArrayEquals (คาดหวัง, จริง)
ต้องใช้วิธีการข้างต้นหากอาร์เรย์มีความยาวเท่ากัน สำหรับแต่ละค่าที่ถูกต้องสำหรับ iคุณสามารถตรวจสอบได้ตามด้านล่างนี้:
- assertEquals(expected[i], actual[i])
- assertArrayEquals(expected[i], actual[i])
ข้อความล้มเหลว
หากคุณต้องการที่จะโยนข้อผิดพลาดในการยืนยันคุณมี ล้มเหลว()ซึ่งส่งผลให้ได้รับผลการประเมินว่าล้มเหลวเสมอ
- ล้มเหลว(ข้อความ);
คุณสามารถมีวิธีการยืนยันที่มีส่วนเพิ่มเติมได้ เชือก พารามิเตอร์เป็นพารามิเตอร์แรก สตริงนี้จะถูกเพิ่มต่อท้ายข้อความแสดงข้อผิดพลาดหากการตรวจสอบล้มเหลว ตัวอย่างเช่น ล้มเหลว (ข้อความ) สามารถเขียนเป็น:
- assertEquals(message, expected, actual)
JUnit ยืนยันเท่ากับ
คุณมี assertEquals(a, b)ซึ่งขึ้นอยู่กับ เท่ากับ () วิธีการของคลาส Object
- ในที่นี้ก็จะประเมินเป็น. ก.เท่ากับ(ข).
- ในที่นี้คลาสที่อยู่ระหว่างการทดสอบใช้เพื่อกำหนดความสัมพันธ์ความเท่าเทียมกันที่เหมาะสม
- หากคลาสไม่แทนที่ไฟล์ เท่ากับ () วิธีการของ วัตถุ คลาสนี้จะได้รับพฤติกรรมเริ่มต้นของคลาสนั้น เท่ากับ () วิธีการ เช่น เอกลักษณ์ของวัตถุ
If a และ b เป็นพื้นฐานเช่น ไบต์, int, บูลเป็นต้น จากนั้นจะดำเนินการดังต่อไปนี้สำหรับ assertEquals(a, b):
a และ b จะถูกแปลงเป็นประเภทออบเจ็กต์ wrapper ที่เทียบเท่ากัน (ไบต์, จำนวนเต็ม, บูลีนฯลฯ) จากนั้น ก.เท่ากับ(ข) จะได้รับการประเมิน
ตัวอย่างเช่น ลองพิจารณาสตริงด้านล่างที่มีค่าเดียวกัน เรามาทดสอบโดยใช้ assertEquals กัน:
String obj1 = "Junit"; String obj2 = "Junit"; assertEquals(obj1, obj2);
คำสั่ง assert ข้างต้นจะส่งคืนค่า true เนื่องจาก obj1.equals(obj2) ส่งคืนค่า true
การยืนยันจุดลอยตัว
เมื่อคุณต้องการเปรียบเทียบประเภทข้อมูลทศนิยม (เช่น สอง or ลอย) คุณต้องระบุพารามิเตอร์เพิ่มเติมอีกหนึ่งตัว รูปสามเหลี่ยมเพื่อหลีกเลี่ยงปัญหาข้อผิดพลาดจากการปัดเศษขณะเปรียบเทียบเลขทศนิยม
การยืนยันประเมินตามที่ระบุด้านล่าง:
- Math.abs(expected - actual) <= delta
ตัวอย่างเช่น:
assertEquals(aDoubleคุณค่าอีกประการหนึ่งDoubleค่า 0.001)
JUnit ยืนยันตัวอย่าง
ตัวอย่างด้านล่างนี้แสดงวิธีการยืนยันเงื่อนไขโดยใช้ JUnit ยืนยันวิธีการ
มาสร้างคลาสทดสอบง่ายๆ ชื่อ... กันเถอะ การทดสอบ Junit4AssertionTest.java และคลาสนักวิ่งทดสอบ TestRunner.java.
คุณจะต้องสร้างตัวแปรและคำสั่ง assert ที่สำคัญบางส่วนในเอกสารนี้ 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) เรามาวิเคราะห์ผลลัพธ์ที่คาดหวังทีละขั้นตอนกัน พิจารณาคำสั่ง assert ทั้งหมดทีละข้อ:
- assertEquals(string1, string2);
ตอนนี้ให้เปรียบเทียบ string1=”Junit” กับ string2=”Junit” โดยใช้เมธอด equals ของคลาส Object โดยแทนที่เมธอด assertEquals ด้วยเมธอด java.lang.Object.equals()
string1.equals(string2) => ส่งคืนค่า true
ดังนั้น 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()” ใช้สำหรับตรวจสอบว่าอ็อบเจ็กต์นั้นไม่ใช่ค่าว่าง (null) เนื่องจาก string1=”Junit” ซึ่งเป็นค่าที่ไม่ใช่ค่าว่าง ดังนั้น assertNotNull(string1) จะส่งคืนค่าว่าง จริง.
- assertNull(string5);
ฟังก์ชัน “assertNull()” ใช้สำหรับตรวจสอบว่าอ็อบเจ็กต์เป็นค่าว่างหรือไม่ เนื่องจาก string5=null ซึ่งเป็นค่าว่าง ดังนั้น assertNull(string5) จะส่งคืนค่าว่าง จริง.
- assertTrue(variable1 < variable2);
ฟังก์ชัน “assertTrue()” ใช้สำหรับตรวจสอบว่าเงื่อนไขเป็นจริงหรือไม่ เนื่องจาก variable1=1 และ variable2=2 ซึ่งแสดงว่าเงื่อนไข variable1 < variable2 เป็นจริง ดังนั้น assertTrue(variable1 < variable2) จะส่งคืนค่า จริง.
- 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 หากคลาสนี้ส่งค่า true กลับมา เมื่อคุณรันคำสั่ง assert สำหรับการทดสอบ คลาสจะแสดงผลว่าการทดสอบสำเร็จ (ดูผลลัพธ์ด้านล่าง)
ขั้นตอน 4) คลิกขวาที่ไฟล์ Junit4AssertionTest.java แล้วคลิก Run As -> JUnit- คุณจะเห็นผลลัพธ์ตามที่ระบุด้านล่าง:
ผลลัพธ์ข้างต้นแสดงให้เห็นว่าการทดสอบประสบความสำเร็จตามที่คาดไว้


