/ / Tìm hiểu cách sử dụng các khẳng định trong các bài kiểm tra JUnit của bạn

Tìm hiểu cách sử dụng các khẳng định trong các bài kiểm tra JUnit của bạn

person using laptop displaying code

Lớp Assertions JUnit chứa một tập hợp các phương thức tĩnh cho phép bạn thực hiện các bài kiểm tra đơn vị. Assertions là một trong những tính năng cốt lõi của JUnit. Lớp này có hơn năm mươi phương thức đa dạng. Một số bài kiểm tra lớp Assertions sẽ thất bại nếu một điều kiện là đúng, trong khi những bài kiểm tra khác sẽ thất bại nếu một điều kiện sai.

Lớp Assertions cũng có nhiều phương thức được nạp chồng. Mỗi phương thức khẳng định có ít nhất hai phương thức nạp chồng. Khám phá một số phương thức lớp Assertions phổ biến hơn và tìm hiểu cách sử dụng chúng để thực hiện các bài kiểm tra đơn vị.


Phương thức khẳng định

Phương thức JUnit 5 khẳng định có hơn mười biến thể. Phương thức này là một trong những phương thức phổ biến hơn của lớp Assertions. Một biến thể của phương thức khẳng định Equals nhận một giá trị mong đợi và hàm bạn muốn đánh giá (giá trị thực tế). Biến thể chính thứ hai có đối số thứ ba bổ sung. Đây là thông báo lỗi sẽ hiển thị nếu kiểm tra đơn vị JUnit không thành công.

Việc nạp chồng phương thức khẳng định Equals xảy ra với các kiểu dữ liệu khác nhau. Một số phương thức nạp chồng khẳng địnhEquals nhận đối số thứ tư được gọi là delta. Các phiên bản khác thay thế chuỗi lỗi bằng giao diện chức năng của Nhà cung cấp, ở dạng biểu thức lambda.


AssertionsMethods Lớp Java

package com.program;

public class AssertionsMethods {
public static int square(int num) {
return num * num;
}
}

Lớp AssertionsMethods Java ở trên có một phương thức duy nhất được gọi là square. Phương thức bình phương nhận một giá trị nguyên và trả về bình phương của nó. Để kiểm tra phương thức bình phương và bất kỳ phương thức nào trong tương lai từ lớp AssertionsMethods, bạn sẽ cần tạo một trường hợp thử nghiệm JUnit.

Trường hợp thử nghiệm JUnit AssertionsMethodsTest

package com.program;

import static org.junit.Assert.assertEquals;
import static org.junit.jupiter.api.Assertions.*;

import org.junit.jupiter.api.Test;

class AssertionsMethodsTest {
@Test
void testSquare() {
assertEquals(25, AssertionMethods.square(5));
assertEquals(36, AssertionMethods.square(6), "Your square values did not match.");
assertEquals(49, AssertionMethods.square(7), () -> "Your square values did not match.");
}
}

Phương thức testSquare () sử dụng ba biến thể của ensureEquals () để kiểm tra phương thức square (). Mỗi khẳng địnhEquals () là một thành công, vì tất cả các giá trị mong đợi đều khớp với các giá trị thực tế được trả về bởi phương thức square ().

Phương thức khẳng định

Lớp JUnit Assertions có chính xác ba phương thức khẳng định. Mỗi phương thức này nhận một hoặc nhiều đối số và xác nhận nếu đối tượng đã cho là null. Nếu một đối tượng đã cho không phải là null, thì quá trình kiểm tra sẽ không thành công.

@Test
public void testStringValue() {
String stringValue = null;
assertNull(stringValue);
assertNull(stringValue, "Your string value is not null");
assertNull(stringValue, () -> "Your string value is not null");
}

Phương thức khẳng định () đầu tiên nhận một đối tượng chuỗi và kiểm tra xem nó có phải là null hay không. Phương thức statementNull () thứ hai nhận một đối tượng chuỗi và một thông báo chuỗi để hiển thị nếu thử nghiệm không thành công. Phương thức ensureNull () thứ ba và cuối cùng nhận đối tượng mà bạn muốn đánh giá và một giao diện chức năng của Nhà cung cấp.


Trong trường hợp thử nghiệm ở trên, giao diện Nhà cung cấp hoạt động như một mục tiêu gán cho một biểu thức lambda. Biểu thức lambda tạo ra thông báo lỗi nếu quá trình kiểm tra không thành công.

Phương thức khẳng định

Phương thức khẳng định () có sáu biến thể. Mỗi phương thức khẳng định nếu một điều kiện đã cho là đúng. Nếu điều kiện khẳng định () là sai, quá trình kiểm tra sẽ không thành công.

@Test
void testEvenNumbers() {
int num1 = 10;
int num2 = 16;
int num3 = 26;
assertTrue(num1 < num2);
assertTrue(num3 > num2, "Your condition is not true.");
assertTrue(num1 < num3, () -> " Your condition is not true.");
assertTrue(() -> num1%2 == 0);
assertTrue(() -> num2%2 == 0, "Your value is not an even number.");
assertTrue(() -> num3%2 == 0, () -> "Your value is not an even number.");
}

Phương thức testEvenNumbers () trình bày cách sử dụng tất cả sáu phương thức khẳng định (). Tất cả các phương pháp trên đều đúng, do đó, kiểm thử đơn vị này thực thi mà không bị lỗi hoặc lỗi.

  • khẳng địnhTrue (điều kiện Boolean): phương thức này nhận điều kiện Boolean và khẳng định nếu nó là true. Ví dụ về phương thức này trong đoạn mã trên khẳng định nếu giá trị số nguyên đầu tiên nhỏ hơn giá trị thứ hai.
  • khẳng địnhTrue (Điều kiện Boolean, Thông báo chuỗi): phương thức này sử dụng điều kiện Boolean để kiểm tra và một chuỗi để hiển thị nếu nó sai.
  • khẳng địnhTrue (Điều kiện Boolean, Nhà cung cấp messageSupplier): phương thức này nhận giao diện chức năng Boolean và Nhà cung cấp, dưới dạng biểu thức lambda. Nhà cung cấp thông báo chứa một chuỗi để hiển thị nếu điều kiện Boolean là sai.
  • khẳng địnhTrue (BooleanSupplier booleanSupplier): phương thức này nhận một giao diện chức năng BooleanSupplier, dưới dạng một biểu thức lambda đánh giá là true hoặc false. Ví dụ về phương thức này trong mã sử dụng biểu thức lambda. Nó kiểm tra phần còn lại của số nguyên đầu tiên chia cho hai để xác định xem nó chẵn hay lẻ.
  • khẳng địnhTrue (BooleanSupplier booleanSupplier, thông điệp chuỗi): phương thức này nhận một giao diện chức năng BooleanSupplier dưới dạng một biểu thức lambda. Nó cũng cần một thông báo chuỗi để in nếu BooleanSupier không đúng.
  • khẳng địnhTrue (BooleanSupplier booleanSupplier, Nhà cung cấp messageSupplier): phương thức này sử dụng giao diện chức năng BooleanSupplier để xác nhận. Nó cũng có một giao diện chức năng của Nhà cung cấp, là một biểu thức lambda sẽ in ra một giá trị chuỗi nếu thử nghiệm không thành công.


Phương pháp khẳng định

Phương thức khẳng địnhFalse () đối lập với phương thức khẳng định (). Phương pháp này đánh giá một điều kiện nhất định để xem nó có sai hay không. Nếu một điều kiện đã cho là đúng, thì thử nghiệm khẳng định False () sẽ không thành công. Phương thức khẳng địnhFalse () cũng có sáu biến thể chấp nhận các đối số tương tự như đối số khẳng định () của chúng.

@Test
void testNotEvenNumbers() {
int num1 = 11;
int num2 = 17;
int num3 = 27;
assertFalse(num2 < num1);
assertFalse(num2 > num3, " Your condition is not false.");
assertFalse(num3 < num1, () -> " Your condition is not false.");
assertFalse(() -> num1%2 == 0);
assertFalse(() -> num2%2 == 0, "Your value is an even number.");
assertFalse(() -> num3%2 == 0, () -> "Your value is an even number.");
}

Sáu phương thức khẳng địnhFalse () trong phương thức testNotEvenNumbers () đều cho kết quả là false, điều đó có nghĩa là các thử nghiệm khẳng địnhFalse () đã thành công.

Lợi ích của Kiểm tra Đơn vị

Kiểm thử đơn vị là một phần không thể thiếu của quá trình phát triển phần mềm. Các dự án phần mềm lớn thất bại vì nhiều lý do khác nhau, từ các nhóm làm việc trên chúng cho đến các phương pháp phát triển.

Mục đích của kiểm thử đơn vị là loại bỏ lỗi phần mềm bằng cách cung cấp khả năng phát hiện lỗi sớm. Điều này đòi hỏi các nhóm phát triển các thông số kỹ thuật rõ ràng, cải tiến thiết kế phần mềm thông qua tài liệu lỗi và cung cấp hỗ trợ cho việc bảo trì phần mềm.

Kiểm thử đơn vị không phải là cách tiếp cận kiểm thử phần mềm duy nhất mà bạn nên sử dụng trong vòng đời phát triển của mình, nó chỉ là một nơi rất tốt để bắt đầu.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *