CodeGym /Blog Java /Ngẫu nhiên /Xác nhận Java

Xác nhận Java

Xuất bản trong nhóm
Câu lệnh khẳng định Trong Java được sử dụng để kiểm tra các giả định nhất định về trạng thái của chương trình trong khi thực thi. Điều này giúp dễ dàng phát hiện lỗi và debug chương trình. Một câu lệnh khẳng định trong Java được viết bằng từ khóa khẳng định Java, theo sau là một biểu thức boolean. Nếu biểu thức được đánh giá là đúng, xác nhận sẽ diễn ra trong im lặng và chương trình sẽ thực hiện công việc của nó. Nếu nó được đánh giá là sai, thì xác nhận không thành công và AssertionError sẽ được đưa ra. Hãy lấy một ví dụ về một chương trình có các xác nhận Java.
//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);
   }
}
Ở đây biểu thức đúng nên chương trình chỉ tiếp tục công việc của nó. Kết quả đầu ra đúng như mong đợi:
5

Ví dụ về lỗi xác nhận

Trong Java, AssertionError là một lớp con của lớp Error và nó được ném ra khi một xác nhận không thành công. Các xác nhận trong Java thường được sử dụng để kiểm tra xem các điều kiện tiên quyết, hậu điều kiện hoặc bất biến có đúng hay không. Như chúng tôi đã nói bên dưới, AssertionError sẽ được đưa ra khi một câu lệnh xác nhận không được đánh giá là đúng. Bây giờ hãy viết lại chương trình của chúng ta sao cho biểu thức boolean là sai.
//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);
   }
}
Chà, chúng tôi chạy nó và kết quả là…
5
Chắc chắn đã xảy ra lỗi trong ví dụ của chúng tôi! Chúng ta nên có AssertionError ở đây vì x của chúng ta là 5 và xác nhận kỳ vọng nó là 7. Có gì sai ở đây? Điều quan trọng cần lưu ý là các xác nhận Java có thể bị vô hiệu hóa trong JVM, vì vậy chúng không nên được sử dụng làm phương tiện kiểm tra lỗi duy nhất trong một chương trình. Chúng rất hữu ích cho việc gỡ lỗi và thử nghiệm, nhưng không nên dựa vào mã sản xuất. Vì vậy, để sử dụng các xác nhận, bạn cần kích hoạt chúng bằng tùy chọn vm -ea (hoặc -enableassertions). Nếu bạn đang làm việc với dòng lệnh, bạn có thể sử dụng lệnh tiếp theo cho chương trình AssertDemo1 của mình:
java -ea AssertDemo1
nếu bạn bật xác nhận và chạy lại cùng một chương trình, bạn sẽ nhận được thông báo tiếp theo:
Ngoại lệ trong luồng "chính" java.lang.AssertionError: x phải là 7 tại AssertDemo1.main(AssertDemo1.java:4)
Đó là điểm.

Cách bật ngoại lệ trong IntelliJ IDEA

  1. Chuyển đến menu Chạy → Chỉnh sửa cấu hình....
  2. Nhập tham số -ea vào dòng VM options
Xác nhận Java - 1Bây giờ các xác nhận đã được kích hoạt và bạn có thể sử dụng chúng.

Các xác nhận cho thử nghiệm đơn vị trong Java

Trong Java, kiểm thử đơn vị là một kỹ thuật bao gồm việc kiểm tra từng mô-đun mã riêng lẻ để đảm bảo chúng hoạt động chính xác. Các xác nhận thường được sử dụng trong thử nghiệm đơn vị trong Java để xác minh rằng mã được thử nghiệm có hoạt động như mong đợi hay không. Trong thử nghiệm đơn vị, một đơn vị mã, chẳng hạn như một phương pháp cụ thể, được thử nghiệm tách biệt để đảm bảo rằng nó hoạt động chính xác trong các điều kiện và đầu vào khác nhau. Hãy lấy một ví dụ. Ở đây chúng ta có một máy tính đơn giản để cộng, trừ, nhân và chia 2 số nguyên.
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;
   }
}
Tất nhiên, có nhiều câu hỏi về cách triển khai này (ví dụ: điều gì sẽ xảy ra nếu chúng ta thêm int lớn nhất vào một số khác), nhưng bây giờ chúng ta sẽ giữ nguyên cách triển khai này. Bây giờ hãy viết một lớp trong đó chúng ta sẽ kiểm tra các phương thức của lớp myMath với sự trợ giúp của các bài kiểm tra đơn vị. Đúng, chỉ có hai trong số họ. Trong thực tế, bạn có thể viết các bài kiểm tra để kiểm tra tính hợp lệ của các đối số, liệu một phương thức có xử lý được các trường hợp đặc biệt hay không, v.v. Nhưng ở đây chúng tôi sẽ giới hạn ở một vài thử nghiệm nhằm mục đích trình diễn.
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);
   }

}
Phương thức khẳng địnhEquals là một xác nhận kiểm tra xem hai giá trị có bằng nhau hay không. Nếu các giá trị không bằng nhau, AssertionError sẽ được đưa ra, cho biết quá trình kiểm tra đã thất bại. Việc sử dụng các xác nhận trong kiểm thử đơn vị có thể giúp bạn phát hiện lỗi và đảm bảo rằng mã của bạn hoạt động chính xác trong các điều kiện và đầu vào khác nhau. Hãy thử tự thêm các bài kiểm tra như vậy để chia và nhân. Nó không khó.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION