Java: Sử dụng Assertion


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

Assertion

Tất cả các assertion đều nằm trong lớp Assert.

public class Assert extends java.lang.Object

Lớp này cung cấp một tập hợp các phương thức assertion, hữu ích cho việc viết các test. Chỉ những assertion không thành công mới được ghi lại. Một số phương thức quan trọng của lớp Assert như sau:

Sr.No. Phương thức & Mô tả
1

void assertEquals(boolean expected, boolean actual)

Kiểm tra xem hai đối tượng hoặc hai giá trị nguyên thủy có bằng nhau không.

2

void assertTrue(boolean condition)

Kiểm tra xem điều kiện có đúng không.

3

void assertFalse(boolean condition)

Kiểm tra xem điều kiện có sai không.

4

void assertNotNull(Object object)

Kiểm tra xem một đối tượng có phải là not null không.

5

void assertNull(Object object)

Kiểm tra xem một đối tượng có phải là null không.

6

void assertSame(object1, object2)

Kiểm tra xem hai tham chiếu đối tượng có trỏ đến cùng một đối tượng hay không.

7

void assertNotSame(object1, object2)

Kiểm tra hai tham chiếu đối tượng có không trỏ đến cùng một đối tượng hay không.

8

void assertArrayEquals(expectedArray, resultArray)

Phương thức này sẽ kiểm tra xem hai mảng có bằng nhau hay không.

Bây giờ ta hãy sử dụng một số phương thức được đề cập ở trên trong một ví dụ. Tạo file java có tên TestAssertions.java trong C:\>JUNIT_WORKSPACE.

import org.junit.Test;
import static org.junit.Assert.*;

public class TestAssertions {

   @Test
   public void testAssertions() {
      //test data
      String str1 = new String ("abc");
      String str2 = new String ("abc");
      String str3 = null;
      String str4 = "abc";
      String str5 = "abc";
		
      int val1 = 5;
      int val2 = 6;

      String[] expectedArray = {"one", "two", "three"};
      String[] resultArray =  {"one", "two", "three"};

      //Check that two objects are equal
      assertEquals(str1, str2);

      //Check that a condition is true
      assertTrue (val1 < val2);

      //Check that a condition is false
      assertFalse(val1 > val2);

      //Check that an object isn't null
      assertNotNull(str1);

      //Check that an object is null
      assertNull(str3);

      //Check if two object references point to the same object
      assertSame(str4,str5);

      //Check if two object references not point to the same object
      assertNotSame(str1,str3);

      //Check whether two arrays are equal to each other.
      assertArrayEquals(expectedArray, resultArray);
   }
}

Tiếp theo, 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 TestRunner2 {
   public static void main(String[] args) {
      Result result = JUnitCore.runClasses(TestAssertions.class);
		
      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
		
      System.out.println(result.wasSuccessful());
   }
} 

Biên dịch các lớp Test case và Test Runner bằng javac:

C:\JUNIT_WORKSPACE>javac TestAssertions.java TestRunner.java

Bây giờ hãy chạy Test Runner, nó sẽ chạy test case đượ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.

true

Chú thích (Annotation)

Chú thích giống như thẻ meta mà bạn có thể thêm vào mã của mình và áp dụng chúng cho các phương thức hoặc trong lớp. Các chú thích này trong JUnit cung cấp thông tin sau về các phương thức kiểm thử:

  • phương thức nào sẽ chạy trước và sau phương thức test.
  • phương thức nào chạy trước và sau tất cả các phương thức.
  • phương thức hoặc lớp nào sẽ bị bỏ qua trong quá trình thực thi.

Bảng sau cung cấp danh sách các chú thích và ý nghĩa của chúng trong JUnit:

Sr.No. Chú thích & Mô tả
1

@Test

Chú thích này cho JUnit biết rằng phương thức public void mà nó được đính kèm có thể được chạy như một test case.

2

@Before

Một số test cần các đối tượng tương tự được tạo trước khi chúng có thể chạy. Chú thích một phương thức public void với @Before khiến phương thức đó được chạy trước mỗi phương thức Test.

3

@After

Nếu bạn phân bổ tài nguyên bên ngoài trong phương thức Before, bạn cần giải phóng chúng sau khi chạy test. Chú thích phương thức public void với @After làm cho phương thức đó được chạy sau phương thức Test.

4

@BeforeClass

Việc chú thích một phương thức public static void với @BeforeClass khiến nó được chạy một lần trước bất kỳ phương thức test nào trong lớp.

5

@AfterClass

Điều này sẽ thực hiện phương thức sau khi kết thúc tất cả các test. Điều này có thể được sử dụng để thực hiện các hoạt động dọn dẹp (clean-up).

6

@Ignore

Được sử dụng để bỏ qua test và test đó sẽ không được thực hiện.

Tạo file lớp java có tên JunitAnnotation.java trong C:\>JUNIT_WORKSPACE để kiểm tra chú thích.

import org.junit.After;
import org.junit.AfterClass;

import org.junit.Before;
import org.junit.BeforeClass;

import org.junit.Ignore;
import org.junit.Test;

public class JunitAnnotation {
	
   //execute before class
   @BeforeClass
   public static void beforeClass() {
      System.out.println("in before class");
   }

   //execute after class
   @AfterClass
   public static void  afterClass() {
      System.out.println("in after class");
   }

   //execute before test
   @Before
   public void before() {
      System.out.println("in before");
   }
	
   //execute after test
   @After
   public void after() {
      System.out.println("in after");
   }
	
   //test case
   @Test
   public void test() {
      System.out.println("in test");
   }
	
   //test case ignore and will not execute
   @Ignore
   public void ignoreTest() {
      System.out.println("in ignore test");
   }
}

Tiếp theo, tạo một file java có tên TestRunner.java trong C:\>JUNIT_WORKSPACE để thực thi các chú thích.

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(JunitAnnotation.class);
		
      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
		
      System.out.println(result.wasSuccessful());
   }
} 

Biên dịch các lớp Test case và Test Runner bằng javac:

C:\JUNIT_WORKSPACE>javac JunitAnnotation.java TestRunner.java

Bây giờ hãy chạy Test Runner, nó sẽ chạy test case đượ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.

in before class
in before
in test
in after
in after class
true
» Tiếp: Thủ tục thực thi
« Trước: Viết chương trình kiểm thử
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 !!!