JUnit 5 là gì và bạn có thể sử dụng nó để làm gì?

Trong phát triển phần mềm, kiểm thử đơn vị là một quá trình cô lập và kiểm tra các phần dành riêng của một ứng dụng. Đơn vị là thuật ngữ chính thức cho các phần dành riêng này. Trong ứng dụng Java của bạn, một đơn vị là một phương thức.

Có rất nhiều khuôn khổ kiểm thử đơn vị có sẵn cho các nhà phát triển Java. Trong số các khung công tác hàng đầu là JUnit 5.

Tại sao kiểm thử đơn vị lại quan trọng?

Nếu bạn đã từng viết các câu lệnh gỡ lỗi để in và kiểm tra giá trị của một biến, xin chúc mừng; bạn đã tạo một bài kiểm tra đơn vị. Phần mã bỏ đi này là cần thiết vì bạn không nhận được đầu ra mong muốn.

Nhưng điều gì sẽ xảy ra nếu bạn đang nhận được đầu ra mong muốn và mã vẫn có lỗi ở đâu đó? Bạn có thể triển khai ứng dụng và lỗi này có thể dẫn đến vi phạm bảo mật sau này. Đối với các ứng dụng lưu trữ dữ liệu của người dùng, tiền đặt cọc rất cao khi có vi phạm bảo mật.

Kiểm thử đơn vị nhắm mục tiêu mọi phần trong ứng dụng của bạn — cho dù nó hiện đang gây ra lỗi hay không. Do đó, kiểm thử đơn vị đóng một vai trò quan trọng trong việc bảo mật phần mềm tốt.


JUnit 5 là gì?

JUnit 5 không chỉ là một khuôn khổ kiểm thử đơn vị khác. Nó có một số dự án con, cụ thể là JUnit Platform, JUnit Jupiter và JUnit Vintage. Mỗi thành phần trong số ba thành phần này có các mô-đun duy nhất hoạt động cùng nhau để cải thiện việc kiểm tra cho các lập trình viên Java.

Nền tảng JUnit 5 có sẵn trong các phiên bản mới nhất của các nền tảng phát triển Tích hợp Java hàng đầu (IDE). Các IDE Java hỗ trợ JUnit 5 là:

  • IntelliJ IDEA
  • Nhật thực
  • NetBeans
  • Mã Visual Studio

Tạo bài kiểm tra đơn vị với JUnit 5

Chương trình mẫu này sử dụng JUnit 5 để tạo một số bài kiểm tra đơn vị trên một ứng dụng máy tính đơn giản.

Lớp Máy tính

package app;
public class Calculator {
public static int add(int num1, int num2) {
return num1 + num2;
}


public static int subtract(int num1, int num2) {
return num1 - num2;
}


public static int multiply(int num1, int num2) {
return num1 * num2;
}


public static int divide(int num1, int num2) {
return num1 / num2;
}
}

Lớp Java ở trên thực hiện bốn phép toán tĩnh: cộng, trừ, nhân và chia. Mỗi phương thức nhận hai đối số nguyên và trả về một giá trị số nguyên duy nhất.

Lớp kiểm tra JUnit 5

package test;
import static org.junit.Assert.*;
import app.Calculator;
import org.junit.Test;


public class CalculatorTest {
@Test
public void testAdd() {
assertEquals(7, Calculator.add(3, 4));
}


@Test
public void testSubtract() {
assertEquals(6, Calculator.subtract(9, 3));
}


@Test
public void testMultiply() {
assertEquals(10, Calculator.multiply(5, 2));
}


@Test
public void testDivide() {
assertEquals(2, Calculator.divide(4, 2));
}
}

Máy tính giới thiệu hai khái niệm quan trọng: @Bài kiểm tra chú thích và khẳng địnhEquals () phương pháp. Các Chú thích @Test cho biết rằng phương thức ngay bên dưới nó là một phương thức thử nghiệm. Trong lớp kiểm tra ở trên, có bốn phương pháp kiểm tra, một phương pháp cho mỗi phép tính trên máy tính.


Tất cả các phương pháp kiểm tra đều sử dụng phương thức khẳng định (). Phương thức này nhận hai đối số bắt buộc và một đối số thứ ba tùy chọn. Đối số đầu tiên được cung cấp cho khẳng địnhEquals () phương thức trên là kết quả mong đợi và đối số thứ hai là phương pháp (hoặc đơn vị) bạn muốn đánh giá.

Lớp CalculatorTest không có phương thức chính, nhưng các chú thích JUnit @Test làm cho mỗi phương thức thử nghiệm có thể thực thi được. Việc thực thi lớp CalculatorTest trong eclipse sẽ tạo ra giao diện sau:

Như bạn thấy, mỗi thử nghiệm đều thành công. Có bốn bài kiểm tra và tất cả chúng đều chạy mà không có lỗi hoặc hỏng hóc.

Kiểm tra đơn vị học tập có thể mở rộng cơ hội nghề nghiệp của bạn

Là một nhà phát triển, biết cách kiểm thử phần mềm là một kỹ năng thuận lợi cần có. Nó chắc chắn sẽ cải thiện quy trình làm việc của bạn và hy vọng làm cho mã của bạn dễ sử dụng hơn cho người khác. Tuy nhiên, có một nhánh phát triển phần mềm chỉ tập trung vào kiểm thử. Những kỹ sư này được biết đến như những người kiểm thử phần mềm.

Previous Post
Next Post

post written by: