JUnit - Kiểm tra tham số hóa
JUnit 4 đã giới thiệu một tính năng mới được gọi là parameterized tests. Kiểm tra tham số hóa cho phép nhà phát triển chạy đi chạy lại cùng một thử nghiệm bằng cách sử dụng các giá trị khác nhau. Có năm bước mà bạn cần làm theo để tạo kiểm tra tham số hóa.
Chú thích lớp thử nghiệm với @RunWith (Parameterized.class).
Tạo một phương thức tĩnh công khai được chú thích bằng @Parameters trả về Bộ sưu tập các đối tượng (dưới dạng Mảng) dưới dạng tập dữ liệu thử nghiệm.
Tạo một phương thức khởi tạo công khai nhận tương đương với một "hàng" dữ liệu thử nghiệm.
Tạo một biến phiên bản cho mỗi "cột" của dữ liệu thử nghiệm.
Tạo (các) trường hợp thử nghiệm của bạn bằng cách sử dụng các biến phiên bản làm nguồn dữ liệu thử nghiệm.
Trường hợp thử nghiệm sẽ được gọi một lần cho mỗi hàng dữ liệu. Hãy để chúng tôi xem các thử nghiệm tham số hóa đang hoạt động.
Tạo một lớp học
Tạo một lớp java để được kiểm tra, giả sử, PrimeNumberChecker.java trong C: \> JUNIT_WORKSPACE.
public class PrimeNumberChecker {
public Boolean validate(final Integer primeNumber) {
for (int i = 2; i < (primeNumber / 2); i++) {
if (primeNumber % i == 0) {
return false;
}
}
return true;
}
}
Tạo lớp trường hợp thử nghiệm được tham số hóa
Tạo một lớp kiểm tra java, giả sử, PrimeNumberCheckerTest.java. Tạo tệp lớp java có tênPrimeNumberCheckerTest.java trong C: \> JUNIT_WORKSPACE.
import java.util.Arrays;
import java.util.Collection;
import org.junit.Test;
import org.junit.Before;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import org.junit.runner.RunWith;
import static org.junit.Assert.assertEquals;
@RunWith(Parameterized.class)
public class PrimeNumberCheckerTest {
private Integer inputNumber;
private Boolean expectedResult;
private PrimeNumberChecker primeNumberChecker;
@Before
public void initialize() {
primeNumberChecker = new PrimeNumberChecker();
}
// Each parameter should be placed as an argument here
// Every time runner triggers, it will pass the arguments
// from parameters we defined in primeNumbers() method
public PrimeNumberCheckerTest(Integer inputNumber, Boolean expectedResult) {
this.inputNumber = inputNumber;
this.expectedResult = expectedResult;
}
@Parameterized.Parameters
public static Collection primeNumbers() {
return Arrays.asList(new Object[][] {
{ 2, true },
{ 6, false },
{ 19, true },
{ 22, false },
{ 23, true }
});
}
// This test will run 4 times since we have 5 parameters defined
@Test
public void testPrimeNumberChecker() {
System.out.println("Parameterized Number is : " + inputNumber);
assertEquals(expectedResult,
primeNumberChecker.validate(inputNumber));
}
}
Tạo lớp chạy thử nghiệm
Tạo tệp lớp java có tên TestRunner.java trong C: \> JUNIT_WORKSPACE để thực thi (các) trường hợp thử nghiệm.
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(PrimeNumberCheckerTest.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful());
}
}
Biên dịch các lớp PrimeNumberChecker, PrimeNumberCheckerTest và Test Runner bằng javac.
C:\JUNIT_WORKSPACE>javac PrimeNumberChecker.java PrimeNumberCheckerTest.java
TestRunner.java
Bây giờ chạy Test Runner, sẽ chạy các trường hợp thử nghiệm được xác định trong lớp Test Case được cung cấp.
C:\JUNIT_WORKSPACE>java TestRunner
Xác minh kết quả đầu ra.
Parameterized Number is : 2
Parameterized Number is : 6
Parameterized Number is : 19
Parameterized Number is : 22
Parameterized Number is : 23
true