Java: Tham số hóa test


Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên

JUnit giới thiệu một tính năng mới được gọi là tham số hóa test. Các tham số hóa test cho phép developer chạy đi chạy lại cùng một test 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 một tham số hóa test.

  • Chú thích lớp test với @RunWith(Parameterized.class).
  • Tạo một phương thức public static được chú thích bằng @Parameters mà trả về một Collection các đối tượng (dưới dạng Mảng) dưới dạng tập dữ liệu test.
  • Tạo một hàm tạo public nhận những gì tương đương với một "hàng" dữ liệu test.
  • Tạo một biến thể hiện (instance) cho mỗi "cột" của dữ liệu test.
  • Tạo (các) test case của bạn bằng cách sử dụng các biến thể hiện làm nguồn dữ liệu test.

Test case sẽ được gọi một lần cho mỗi hàng dữ liệu. Bây giờ ta sẽ xem xem các tham số hóa test hoạt động ra sao.

Tạo một lớp

Tạo một lớp java để được test, chẳng hạn như 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 test case được tham số hóa

Tạo một lớp test java, chẳng hạn như PrimeNumberCheckerTest.java. Tạo tệp lớp java có tên PrimeNumberCheckerTest.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();
   }

   // Mỗi tham số nên được đặt thành đối số ở đây
   // Khi trình chạy được kích hoạt thì nó sẽ truyền các đối số
   // từ các tham số mà ta đã tạo trong phương thức primeNumbers()
	
   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 test runner

Tạo file java có tên TestRunner.java trong C:\>JUNIT_WORKSPACE để thực thi (các) test case.

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 đã 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
» Tiếp: Chạy JUnit bằng Ant
« Trước: Ngoại lệ (Exception) test
Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên
Copied !!!