Kết nối khung JUnit

Để kiểm tra mã Java, chúng tôi có một khuôn khổ tuyệt vời được gọi là JUnit . Nó hoạt động rất tốt, nó được cập nhật liên tục, nó rất phổ biến và tất nhiên Intellij IDEA được tích hợp rất chặt chẽ với nó.

Bây giờ mọi người đang sử dụng phiên bản thứ năm của khung này - JUnit 5 , mặc dù trong nhiều dự án, bạn vẫn có thể tìm thấy phiên bản thứ tư của nó. Chúng không khác nhau nhiều, nhưng dù sao chúng ta cũng sẽ xem xét cái mới nhất. Tôi nghĩ rằng khi bạn bắt đầu tích cực viết bài kiểm tra, bạn sẽ chấp thuận lựa chọn của tôi.

Vì vậy, làm thế nào để thêm JUnit vào dự án? Sau khi học Maven, mọi việc sẽ trở nên dễ dàng: chỉ cần thêm mã này vào tệp pom.xml của bạn:

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
	<version>5.8.1</version>
	<scope>test</scope>
</dependency>

Nhân tiện, nếu bạn muốn Maven chạy thử nghiệm của mình ở giai đoạn xây dựng ( giai đoạn thử nghiệm ), thì bạn cần thêm một đoạn nữa vào pom.xml:

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
	<version>2.19.1</version>
	<dependencies>
    	<dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-surefire-provider</artifactId>
            <version>1.3.2</version>
    	</dependency>
	</dependencies>
</plugin>

@Test chú thích

Giả sử bạn có một lớp học mà bạn muốn kiểm tra. Cách tốt nhất để làm việc này là gì? Hãy bắt đầu với một số ví dụ, bởi vì thật khó để kiểm tra một lớp trừu tượng :)

Giả sử chúng ta có một lớp Calculator có thể thực hiện 4 phép toán cơ bản: cộng, trừ, nhân và chia. Hãy viết nó:

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

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

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

    	public int div(int a, int b) {
        	return a/b;
    	}
}

Chúng tôi muốn kiểm tra các phương thức của lớp này. Bạn không bao giờ biết, trong tương lai họ sẽ thay đổi điều gì đó và mọi thứ sẽ ngừng hoạt động. Làm thế nào chúng ta có thể viết bài kiểm tra cho nó?

Chúng ta cần tạo một lớp khác. Để làm được điều này, chúng thường lấy tên giống nhau và thêm hậu tố Test . Đối với mỗi phương pháp, bạn phải thêm ít nhất một phương pháp kiểm tra. Ví dụ:

class CalculatorTest {
   	@Test
    	public void add() {
    	}
   	@Test
    	public void sub() {
        }
   	@Test
    	public void mul() {
    	}
   	@Test
    	public void div() {
    	}
}

Đã từng có yêu cầu rằng tên phương thức bắt đầu bằng từ test , nhưng điều này không còn bắt buộc nữa.

Ví dụ kiểm tra JUnit

Hãy viết một số ví dụ để kiểm tra các phương thức của lớp CalculatorTest :

class CalculatorTest {
   	@Test
    	public void add() {
        	Calculator calc = new Calculator();
        	int result = calc.add(2, 3);
        	assertEquals(5, result);
    	}

   	@Test
    	public void sub() {
        	Calculator calc = new Calculator();
        	int result = calc.sub(10, 10);
        	assertEquals(0, result);
        }

   	@Test
    	public void mul() {
        	Calculator calc = new Calculator();
        	int result = calc.mul(-5, -3);
        	assertEquals(15, result);
    	}

   	@Test
    	public void div() {
        	Calculator calc = new Calculator();
        	int result = calc.div(2, 3);
        	assertEquals(0, result);
    	}
}

Đây là hình thức của một bài kiểm tra JUnit điển hình. Điều thú vị là: phương thức đặc biệt assertEquals() được sử dụng ở đây : nó so sánh các tham số được truyền cho nó, như được biểu thị bằng từ bằng trong tên của nó.

Nếu các tham số truyền vào assertEquals() không bằng nhau, phương thức sẽ đưa ra một ngoại lệ và thử nghiệm sẽ thất bại. Ngoại lệ này sẽ không ngăn các thử nghiệm khác chạy.