JUnit - Sử dụng Assertion

Quả quyết

Tất cả các xác nhận đề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 khẳng định, hữu ích cho việc viết các bài kiểm tra. Chỉ những xác nhận 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 pháp & Mô tả
1

void assertEquals(boolean expected, boolean actual)

Kiểm tra xem hai đối tượng / nguyên thủy có bằng nhau không.

2

void assertTrue(boolean condition)

Kiểm tra xem một điều kiện là đúng.

3

void assertFalse(boolean condition)

Kiểm tra xem một điều kiện là sai.

4

void assertNotNull(Object object)

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

5

void assertNull(Object object)

Kiểm tra xem một đối tượng có rỗng không.

6

void assertSame(object1, object2)

Phương thức khẳng định () kiểm tra nếu hai tham chiếu đối tượng trỏ đến cùng một đối tượng.

7

void assertNotSame(object1, object2)

Phương thức OwnerNotSame () kiểm tra nếu hai tham chiếu đối tượng không trỏ đến cùng một đối tượng.

số 8

void assertArrayEquals(expectedArray, resultArray);

Phương thức khẳng địnhArrayEquals () sẽ kiểm tra xem hai mảng có bằng nhau hay không.

Hãy sử dụng một số phương pháp được đề cập ở trên trong một ví dụ. Tạo tệp lớp java có tênTestAssertions.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 một 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 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ờ chạy Test Runner, sẽ chạy 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.

true

Chú thích

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 pháp kiểm tra -

  • phương thức nào sẽ chạy trước và sau phương pháp thử nghiệm.
  • phương thức nào chạy trước và sau tất cả các phương thức, và.
  • 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 Kiểm tra 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 trường hợp kiểm tra.

2

@Before

Một số thử nghiệm 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 phương thức trống công khai với @Before khiến phương thức đó được chạy trước mỗi phương thức Kiểm tra.

3

@After

Nếu bạn phân bổ tài nguyên bên ngoài trong phương pháp Before, bạn cần giải phóng chúng sau khi chạy thử nghiệm. Chú thích phương thức trống công khai với @After khiến phương thức đó được chạy sau phương thức Kiểm tra.

4

@BeforeClass

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

5

@AfterClass

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

6

@Ignore

Chú thích Bỏ qua được sử dụng để bỏ qua kiểm tra và kiểm tra đó sẽ không được thực hiện.

Tạo tệp 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 tệp lớp java có tên TestRunner.java trong C: \> JUNIT_WORKSPACE để thực thi 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ờ chạy Test Runner, sẽ chạy 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.

in before class
in before
in test
in after
in after class
true