Junit Assert & AssertEquals với ví dụ
⚡ Tóm tắt thông minh
JUnit Các phương thức `Assert` và `AssertEquals` xác định trạng thái thành công hay thất bại của một trường hợp kiểm thử bằng cách so sánh giá trị mong đợi và giá trị thực tế. Tài liệu này giải thích các phương thức `assert` được cung cấp bởi `org.junit.Assert`, bao gồm các khẳng định kiểu boolean, null, đồng nhất, bằng nhau và mảng, với một ví dụ hoạt động hoàn chỉnh.

Khẳng định Junit là gì?
Phương thức `assert` rất hữu ích trong việc xác định trạng thái Đạt (Pass) hay Thất bại (Fail) của một trường hợp kiểm thử. Các phương thức `assert` được cung cấp bởi lớp `org.junit.Assert`, lớp này kế thừa từ lớp `java.lang.Object`.
Có nhiều loại khẳng định khác nhau, chẳng hạn như Boolean, Null, Identical, v.v.
JUnit Cung cấp một lớp có tên là Assert, lớp này cung cấp một loạt các phương thức khẳng định hữu ích trong việc viết các trường hợp kiểm thử và phát hiện lỗi kiểm thử.
Các phương thức khẳng định được cung cấp bởi lớp org.junit.Khẳng định, mở rộng java.lang.Object lớp học.
JUnit Khẳng định phương pháp
Boolean
Nếu bạn muốn kiểm tra các điều kiện boolean (đúng hoặc sai), bạn có thể sử dụng các phương thức assert sau:
- khẳng định Đúng(điều kiện)
- khẳng địnhFalse(điều kiện)
Ở đây điều kiện là một giá trị boolean.
Đối tượng rỗng
Nếu bạn muốn kiểm tra giá trị ban đầu của một đối tượng/biến, bạn có các phương pháp sau:
- khẳng địnhNull(đối tượng)
- khẳng địnhNotNull(đối tượng)
Ở đây đối tượng là một Java vật, ví dụ khẳng địnhNull(thực tế);
Đồng nhất
Nếu bạn muốn kiểm tra xem các đối tượng có giống hệt nhau hay không (tức là so sánh hai tham chiếu đến cùng một đối tượng). Java đối tượng) hoặc khác nhau:
- assertSame(expected, actual) — Nó sẽ trả về true nếu dự kiến == thực tế.
- khẳng địnhNotSame(dự kiến, thực tế)
Khẳng định bằng
Nếu bạn muốn kiểm tra sự bằng nhau của hai đối tượng, bạn có thể sử dụng phương pháp sau:
- khẳng địnhEquals(dự kiến, thực tế)
Nó sẽ trả về true nếu expected.equals(actual) trả về true.
Khẳng định mảng bằng
Nếu bạn muốn kiểm tra sự bằng nhau của các mảng, bạn có thể sử dụng phương pháp sau:
- khẳng địnhArrayEquals(dự kiến, thực tế)
Phương pháp trên phải được sử dụng nếu các mảng có cùng độ dài. Đối với mỗi giá trị hợp lệ cho i, bạn có thể kiểm tra nó như dưới đây:
- assertEquals(expected[i], actual[i])
- assertArrayEquals(expected[i], actual[i])
Thông báo lỗi
Nếu bạn muốn đưa ra bất kỳ lỗi xác nhận nào, bạn có Thất bại()Điều này luôn dẫn đến kết quả trượt.
- thất bại(thông báo);
Bạn có thể có một phương thức khẳng định với một phần bổ sung. Chuỗi tham số là tham số đầu tiên. Chuỗi này sẽ được thêm vào thông báo lỗi nếu điều kiện xác nhận thất bại. Ví dụ: thất bại (thông báo) có thể được viết như:
- assertEquals(message, expected, actual)
JUnit khẳng định
Bạn có assertEquals(a, b), dựa vào bằng () phương thức của lớp Object.
- Ở đây nó sẽ được đánh giá là a.bằng(b).
- Ở đây, lớp được kiểm tra được sử dụng để xác định mối quan hệ đẳng thức phù hợp.
- Nếu một lớp không ghi đè bằng () phương pháp của Đối tượng lớp đó sẽ có hành vi mặc định của nó. bằng () phương pháp, tức là định danh đối tượng.
If a và b là những người nguyên thủy như byte, int, boolean, vân vân, sau đó các bước sau sẽ được thực hiện cho assertEquals(a, b):
a và b sẽ được chuyển đổi thành loại đối tượng trình bao bọc tương đương của chúng (Byte, Số nguyên, Boolean, v.v.), và sau đó a.bằng(b) sẽ được đánh giá.
Ví dụ, hãy xem xét các chuỗi được đề cập bên dưới có cùng giá trị; chúng ta hãy kiểm tra điều này bằng cách sử dụng assertEquals:
String obj1 = "Junit"; String obj2 = "Junit"; assertEquals(obj1, obj2);
Câu lệnh assert ở trên sẽ trả về true vì obj1.equals(obj2) trả về true.
Xác nhận dấu phẩy động
Khi bạn muốn so sánh các kiểu dữ liệu dấu phẩy động (ví dụ: tăng gấp đôi or phao), bạn cần thêm một tham số bắt buộc nữa. đồng bằngđể tránh các vấn đề về sai số làm tròn khi thực hiện so sánh số thực.
Khẳng định đánh giá như được đưa ra dưới đây:
- Math.abs(expected – actual) <= delta
Ví dụ:
assertEquals(aDoubleGiá trị, khácDoubleGiá trị, 0.001)
JUnit Khẳng định ví dụ
Ví dụ dưới đây minh họa cách khẳng định một điều kiện bằng cách sử dụng JUnit khẳng định các phương pháp
Chúng ta hãy tạo một lớp kiểm thử đơn giản có tên là... Junit4AssertionTest.java và một lớp chạy thử nghiệm TestRunner.java.
Bạn sẽ tạo một vài biến và các câu lệnh khẳng định quan trọng trong JUnit.
Trong ví dụ này, bạn sẽ thực thi lớp kiểm thử của chúng ta bằng cách sử dụng TestRunner.java.
Bước 1) Chúng ta hãy tạo một lớp bao gồm tất cả các phương thức quan trọng của câu lệnh assert trong 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); } }
Bước 2) Bạn cần tạo một lớp chạy thử nghiệm để thực thi lớp trên:
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()); } }
Bước 3) Chúng ta hãy phân tích kết quả mong đợi từng bước một. Hãy xem xét từng câu lệnh assert một:
- assertEquals(string1, string2);
Bây giờ hãy so sánh chuỗi 1=”Junit” với chuỗi 2=”Junit” bằng phương thức equals của lớp Object. Thay thế phương thức assertEquals bằng phương thức java.lang.Object.equals():
string1.equals(string2) => trả về true
Vì vậy, assertEquals(string1, string2) sẽ trả về đúng.
- khẳng địnhSame(string3, string4);
Chức năng “assertSame()” dùng để kiểm tra xem hai đối tượng có tham chiếu đến cùng một đối tượng hay không. Vì string3=”test” và string4=”test”, nên cả string3 và string4 đều cùng kiểu dữ liệu, do đó assertSame(string3, string4) sẽ trả về true. đúng.
- khẳng địnhNotSame(string1, string3);
Chức năng “assertNotSame()” dùng để kiểm tra xem hai đối tượng có tham chiếu đến cùng một đối tượng hay không. Vì string1=”Junit” và string3=”test”, nên cả string1 và string3 đều thuộc các kiểu dữ liệu khác nhau, do đó assertNotSame(string1, string3) sẽ trả về false. đúng.
- khẳng địnhNotNull(string1);
Chức năng “assertNotNull()” dùng để kiểm tra xem một đối tượng có phải là null hay không. Vì string1=”Junit”, là một giá trị không null, nên assertNotNull(string1) sẽ trả về null. đúng.
- khẳng địnhNull(string5);
Chức năng “assertNull()” dùng để kiểm tra xem một đối tượng có phải là null hay không. Vì string5=null, là một giá trị null, nên assertNull(string5) sẽ trả về null. đúng.
- assertTrue(variable1 < variable2);
Chức năng “assertTrue()” dùng để kiểm tra xem một điều kiện có đúng hay không. Vì variable1=1 và variable2=2, điều này cho thấy điều kiện variable1 < variable2 là đúng, nên assertTrue(variable1 < variable2) sẽ trả về true. đúng.
- khẳng địnhArrayEquals(airthematicArrary1, airethematicArrary2);
Hàm “assertArrayEquals()” dùng để kiểm tra xem mảng mong đợi và mảng kết quả có bằng nhau hay không. Kiểu dữ liệu của mảng có thể là int, long, short, char, byte hoặc java.lang.Object. Vì airethematicArrary1 = { 1, 2, 3 } và airethematicArrary2 = { 1, 2, 3 }, cho thấy cả hai mảng đều bằng nhau, nên assertArrayEquals(airethematicArrary1, airethematicArrary2) sẽ trả về false. đúng.
Vì tất cả bảy câu lệnh khẳng định của Junit4AssertionTest.java Khi bạn thực thi lớp kiểm thử assert, kết quả trả về sẽ là true (xem kết quả bên dưới).
Bước 4) Nhấp chuột phải vào Junit4AssertionTest.java và chọn Run As -> JUnit. Bạn sẽ thấy đầu ra như dưới đây:
Kết quả trên cho thấy bài kiểm tra đã thành công như mong đợi.

