CodeGym /จาวาบล็อก /สุ่ม /การยืนยัน Java
John Squirrels
ระดับ
San Francisco

การยืนยัน Java

เผยแพร่ในกลุ่ม
คำสั่งยืนยันใน Java ใช้เพื่อทดสอบสมมติฐานบางประการเกี่ยวกับสถานะของโปรแกรมระหว่างการดำเนินการ ช่วยให้ตรวจจับข้อผิดพลาดและแก้ไขข้อบกพร่องของโปรแกรมได้ง่าย คำสั่งยืนยันใน Java ถูกเขียนโดยใช้คีย์เวิร์ด assert Java ตามด้วยนิพจน์บูลีน หากนิพจน์ประเมินเป็นจริง การยืนยันจะผ่านไปโดยไม่แจ้งให้ทราบ และโปรแกรมจะทำงาน หากประเมินเป็นเท็จ การยืนยันจะล้มเหลว และAssertionErrorจะถูกส่งออกไป มาดูตัวอย่างโปรแกรมที่มี Java assertions กัน
//Assertion in Java example
public class AssertDemo1 {
   public static void main(String[] args) {
       int x = 5;
       assert x == 5 : "x should be 5";
       System.out.println(x);
   }
}
นิพจน์นี้เป็นจริง ดังนั้นโปรแกรมจึงยังคงทำงานต่อไป ผลลัพธ์เป็นไปตามที่คาดไว้:
5

ตัวอย่างการยืนยันข้อผิดพลาด

ใน Java AssertionErrorเป็นคลาสย่อยของ คลาส Errorและจะถูกส่งออกมาเมื่อการยืนยันล้มเหลว โดยทั่วไปการยืนยันใน Java จะถูกใช้เพื่อตรวจสอบว่าเงื่อนไขเบื้องต้น เงื่อนไขภายหลัง หรือค่าคงที่ถือเป็นจริง ดังที่เราได้กล่าวไว้ด้านล่างAssertionErrorจะถูกส่งออกมาเมื่อคำสั่งยืนยันไม่สามารถประเมินเป็นจริงได้ ตอนนี้เรามาเขียนโปรแกรมของเราใหม่เพื่อให้นิพจน์บูลีนเป็นเท็จ
//AssertionError example
public class AssertDemo1 {
   public static void main(String[] args) {
       int x = 5;
       assert x == 7 : "x should be 7";
       //here should be AssertionError
       System.out.println(x);
   }
}
เรารันมันและผลลัพธ์คือ...
5
มีบางอย่างผิดพลาดในตัวอย่างของเรา! เราควรมีAssertionErrorตรงนี้เพราะ x ของเราคือ 5 และการยืนยันคาดว่ามันจะเป็น 7 เกิดอะไรขึ้น สิ่งสำคัญคือต้องทราบว่าการยืนยัน Java สามารถปิดใช้งานได้ใน JVM เท่านั้น ดังนั้นจึงไม่ควรใช้เป็นวิธีเดียวในการตรวจสอบข้อผิดพลาดในโปรแกรม มีประโยชน์สำหรับการแก้ไขข้อบกพร่องและการทดสอบ แต่ไม่ควรพึ่งพาโค้ดที่ใช้งานจริง ดังนั้นหากต้องการใช้การยืนยัน คุณต้องเปิดใช้งานโดยใช้ตัวเลือก vm -ea (หรือ -enableassertions) หากคุณกำลังทำงานกับบรรทัดคำสั่ง คุณสามารถใช้คำสั่งถัดไปสำหรับโปรแกรม AssertDemo1 ของคุณได้:
ชวา -ea AssertDemo1
หากคุณเปิดใช้งานการยืนยันและรันโปรแกรมเดิมซ้ำ คุณจะได้รับสิ่งถัดไป:
ข้อยกเว้นในเธรด "main" java.lang.AssertionError: x ควรเป็น 7 ที่ AssertDemo1.main(AssertDemo1.java:4)
นั่นคือประเด็น

วิธีเปิดใช้งานข้อยกเว้นใน IntelliJ IDEA

  1. ไปที่เมนู Run → แก้ไขการกำหนดค่า....
  2. ป้อนพารามิเตอร์ -ea ในบรรทัดตัวเลือก VM
การยืนยัน Java - 1ตอนนี้การยืนยันถูกเปิดใช้งานแล้วและคุณสามารถใช้งานได้

การยืนยันการทดสอบหน่วยใน Java

ใน Java การทดสอบหน่วยเป็นเทคนิคที่เกี่ยวข้องกับการทดสอบโค้ดแต่ละโมดูลเพื่อให้แน่ใจว่าทำงานได้อย่างถูกต้อง โดยทั่วไปการยืนยันจะใช้ในการทดสอบหน่วยใน Java เพื่อตรวจสอบว่าโค้ดที่ทดสอบทำงานตามที่คาดไว้ ในการทดสอบหน่วย หน่วยของโค้ด เช่น วิธีการเฉพาะ จะถูกทดสอบแยกกันเพื่อให้แน่ใจว่าทำงานได้อย่างถูกต้องภายใต้เงื่อนไขและอินพุตที่แตกต่างกัน เรามาดูตัวอย่างกันดีกว่า เรามีเครื่องคิดเลขง่ายๆ สำหรับการบวก ลบ คูณ และหารจำนวนเต็ม 2
public class MyMath {

   public static int add (int a, int b) {
       return a + b;
   }

   public static int sub (int a, int b) {
       return a - b;
   }

   public static int mult (int a, int b) {
       return a*b;
   }

   public static double div (int a, int b) {
       return a/b;
   }
}
แน่นอนว่ามีคำถามมากมายเกี่ยวกับการนำไปใช้นี้ (เช่น จะเกิดอะไรขึ้นถ้าเราบวก int ที่มากที่สุดเข้ากับตัวเลขอื่น) แต่สำหรับตอนนี้ เราจะปล่อยให้การใช้งานนี้เหมือนเดิม ตอนนี้เรามาเขียนคลาสที่เราจะทดสอบวิธีการของ คลาส myMathด้วยความช่วยเหลือของการทดสอบหน่วย จริงอยู่มีเพียงสองคนเท่านั้น ในความเป็นจริง คุณสามารถเขียนการทดสอบเพื่อตรวจสอบความถูกต้องของอาร์กิวเมนต์ ไม่ว่าวิธีการจะจัดการกรณีพิเศษหรือไม่ และอื่นๆ แต่ที่นี่เราจะจำกัดตัวเองให้ทำการทดสอบเพียงไม่กี่ครั้งเพื่อจุดประสงค์ในการสาธิต
import org.junit.Test;

import static org.junit.Assert.assertEquals;

public class MyMathTesting {
   @Test
   public void testAdd() {
       MyMath calculator = new MyMath();
       int sum = calculator.add(2, 3);
       assertEquals(5, sum);
   }

   @Test
   public void testSub() {
       MyMath calculator = new MyMath();
       int sub = calculator.sub(5, 2);
       assertEquals(3, sub);
   }

}
เมธอดassertEqualsคือการยืนยันที่ตรวจสอบว่าค่าทั้งสองมีค่าเท่ากันหรือไม่ หากค่าไม่เท่ากันAssertionErrorจะถูกส่งออกไป เพื่อระบุว่าการทดสอบล้มเหลว การใช้การยืนยันในการทดสอบหน่วยสามารถช่วยให้คุณตรวจจับจุดบกพร่องและทำให้แน่ใจว่าโค้ดของคุณทำงานอย่างถูกต้องภายใต้เงื่อนไขและอินพุตที่แตกต่างกัน ลองเพิ่มการทดสอบสำหรับการหารและการคูณด้วยตัวเอง มันไม่ใช่เรื่องยาก
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION