TestNG - Kiểm tra nhóm

Kiểm tra nhóm là một tính năng cải tiến mới trong TestNG, tính năng này không tồn tại trong khuôn khổ JUnit. Nó cho phép bạn gửi các phương pháp thành các phần thích hợp và thực hiện các nhóm phương pháp thử nghiệm phức tạp.

Bạn không chỉ có thể khai báo các phương thức thuộc về nhóm mà còn có thể chỉ định các nhóm chứa các nhóm khác. Sau đó, TestNG có thể được gọi và yêu cầu bao gồm một nhóm nhóm nhất định (hoặc cụm từ thông dụng), đồng thời loại trừ một nhóm khác.

Kiểm tra nhóm cung cấp tính linh hoạt tối đa trong cách bạn phân vùng các bài kiểm tra của mình và không yêu cầu bạn biên dịch lại bất cứ thứ gì nếu bạn muốn chạy hai bộ kiểm tra khác nhau liên tục.

Các nhóm được chỉ định trong tệp testng.xml của bạn bằng thẻ <groups>. Nó có thể được tìm thấy dưới thẻ <test> hoặc <suite>. Các nhóm được chỉ định trong thẻ <suite> áp dụng cho tất cả các thẻ <test> bên dưới.

Bây giờ, chúng ta hãy lấy một ví dụ để xem cách kiểm tra nhóm hoạt động như thế nào.

Tạo một lớp học

  • Tạo một lớp java để được kiểm tra, giả sử, MessageUtil.java trong C:\> TestNG_WORKSPACE.

/*
* This class prints the given message on console.
*/
public class MessageUtil {
   private String message;

   // Constructor
   // @param message to be printed
   public MessageUtil(String message) {
      this.message = message;
   }

   // prints the message
   public String printMessage() {
      System.out.println(message);
      return message;
   }

   // add "tutorialspoint" to the message
   public String salutationMessage() {
      message = "tutorialspoint" + message;
      System.out.println(message);
      return message;
   }

   // add "www." to the message
   public String exitMessage() {
      message = "www." + message;
      System.out.println(message);
      return message;
   }
}

Tạo lớp trường hợp thử nghiệm

  • Tạo một lớp thử nghiệm java, chẳng hạn như GroupTestExample.java.

  • Thêm các phương thức kiểm tra, testPrintMessage () và testSalutationMessage (), vào lớp kiểm tra của bạn.

  • Nhóm phương pháp thử nghiệm thành hai loại -

    • Check-in tests (checkintest)- Các bài kiểm tra này nên được chạy trước khi bạn gửi mã mới. Chúng thường phải nhanh và chỉ cần đảm bảo không có chức năng cơ bản nào bị hỏng.

    • Functional tests (functest) - Các bài kiểm tra này phải bao gồm tất cả các chức năng của phần mềm của bạn và được chạy ít nhất một lần mỗi ngày, mặc dù lý tưởng nhất là bạn muốn chạy chúng liên tục.

Tạo tệp lớp java có tên GroupTestExample.java trong C:\>TestNG_WORKSPACE.

import org.testng.Assert;
import org.testng.annotations.Test;

public class GroupTestExample {
   String message = ".com";
   MessageUtil messageUtil = new MessageUtil(message);

   @Test(groups = { "functest", "checkintest" })
   
   public void testPrintMessage() {
      System.out.println("Inside testPrintMessage()");
      message = ".com";
      Assert.assertEquals(message, messageUtil.printMessage());
   }

   @Test(groups = { "checkintest" })
   
   public void testSalutationMessage() {
      System.out.println("Inside testSalutationMessage()");
      message = "tutorialspoint" + ".com";
      Assert.assertEquals(message, messageUtil.salutationMessage());
   }

   @Test(groups = { "functest" })
   
   public void testingExitMessage() {
      System.out.println("Inside testExitMessage()");
      message = "www." + "tutorialspoint"+".com";
      Assert.assertEquals(message, messageUtil.exitMessage());
   }  
}

Tạo testng.xml

Tạo testng.xml trong C:\> TestNG_WORKSPACE, để thực thi (các) trường hợp thử nghiệm. Ở đây, chúng tôi sẽ chỉ thực hiện những bài kiểm tra thuộc về nhóm chức năng .

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name = "Suite1">
   <test name = "test1">
   
      <groups>
         <run>
            <include name = "functest" />
         </run>
      </groups>

      <classes>
         <class name = "GroupTestExample" />
      </classes>
   
   </test>
</suite>

Biên dịch các lớp MessageUtil, Test case bằng javac.

C:\TestNG_WORKSPACE>javac MessageUtil.java GroupTestExample.java

Bây giờ, chạy testng.xml, mà sẽ chỉ chạy các testPrintMessage () phương pháp, vì nó thuộc nhóm functest .

C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml

Xác minh kết quả đầu ra. Chỉ phương thức testPrintMessage () được thực thi.

Inside testPrintMessage()
.com
Inside testExitMessage()
www..com

===============================================
Suite1
Total tests run: 2, Failures: 1, Skips: 0
===============================================

Nhóm các nhóm

Nhóm cũng có thể bao gồm các nhóm khác. Các nhóm này được gọi làMetaGroups. Ví dụ: bạn có thể muốn xác định một nhóm tất cả bao gồm checkintestfunctest . Hãy sửa đổi tệp testng.xml của chúng tôi như sau:

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "Suite1">
   <test name = "test1">
   
      <groups>
      
         <define name = "all">
            <include name = "functest"/>
            <include name = "checkintest"/>
         </define>
         
         <run>
            <include name = "all"/>
         </run>
         
      </groups>
      
      <classes>
         <class name = "GroupTestExample" />
      </classes>
      
   </test>
</suite>

Thực thi testng.xml ở trên sẽ thực hiện cả ba bài kiểm tra và sẽ cho bạn kết quả sau:

Inside testPrintMessage()
.com
Inside testSalutationMessage()
tutorialspoint.com
Inside testExitMessage()
www.tutorialspoint.com

===============================================
Suite1
Total tests run: 3, Failures: 0, Skips: 0
===============================================

Nhóm loại trừ

Bạn có thể bỏ qua một nhóm bằng cách sử dụng thẻ <exclude> như hình dưới đây -

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "Suite1">
   <test name = "test1">

      <groups>
         <define name = "all">
            <exclude name = "functest"/>
            <include name = "checkintest"/>
         </define>

         <run>
            <include name = "all"/>
         </run>
      </groups>

      <classes>
         <class name = "GroupTestExample" />
      </classes>

   </test>
</suite>