TestNG - 测试套件

  • 简述

    test suite是用于测试软件程序的一个或一组行为的测试用例的集合。在TestNG中,我们不能在测试源代码中定义一个套件,而是用一个XML文件来表示,因为套件是执行的特性。它还允许灵活配置要运行的测试。一个套件可以包含一个或多个测试,并由 <suite> 标签定义。
    <suite> 是 testng.xml 的根标签。它描述了一个测试套件,它又由几个 <test> 部分组成。
    下表列出了 <suite> 接受的所有合法属性。
    序号 属性和描述
    1
    name
    此套件的名称。它是一个mandatory 属性。
    2
    verbose
    此运行的级别或详细程度。
    3
    parallel
    TestNG 是否应该运行不同的线程来运行这个套件。
    4
    thread-count
    要使用的线程数,如果启用了并行模式(否则忽略)。
    5
    annotations
    您在测试中使用的注释类型。
    6
    time-out
    将用于此测试中找到的所有测试方法的默认超时。
    在本章中,我们将向您展示一个具有两个测试类 Test1 和 Test2 的示例,它们使用 Test Suite 一起运行。
  • 创建一个类

    创建一个要测试的java类,比如说, MessageUtil.java/work/testng/src.
    
    /*
    * 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 "Hi!" to the message
       public String salutationMessage() {
          message = "Hi!" + message;
          System.out.println(message);
          return message;
       }
    }
    
  • 创建测试用例类

    创建一个名为的java类文件 Test1.java/work/testng/src.
    
    import org.testng.Assert;
    import org.testng.annotations.Test;
    public class Test1 {
       String message = "Manisha";
       MessageUtil messageUtil = new MessageUtil(message);
       @Test
       public void testPrintMessage() {
          System.out.println("Inside testPrintMessage()");
          Assert.assertEquals(message, messageUtil.printMessage());
       }
    }
    
    创建一个名为的java类文件 Test2.java/work/testng/src .
    
    import org.testng.Assert;
    import org.testng.annotations.Test;
    public class Test2 {
       String message = "Manisha";
       MessageUtil messageUtil = new MessageUtil(message);
       @Test
       public void testSalutationMessage() {
          System.out.println("Inside testSalutationMessage()");
          message = "Hi!" + "Manisha";
          Assert.assertEquals(message,messageUtil.salutationMessage());
       }
    }
    
    现在,让我们将 testng.xml 写入 /work/testng/src ,其中将包含 <suite> 标签,如下所示 -
    
    <?xml version = "1.0" encoding = "UTF-8"?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
    <suite name = "Suite1">
       <test name = "exampletest1">
          <classes>
             <class name = "Test1" />
          </classes>
       </test>
       <test name = "exampletest2">
          <classes>
             <class name = "Test2" />
          </classes>
       </test>
    </suite>
    
    Suite1 包括 exampletest1exampletest2.
    使用 javac 编译所有 java 类。
    
    /work/testng/src$ javac MessageUtil.java Test1.java Test2.java
    
    现在,运行 testng.xml,它将运行在提供的测试用例类中定义的测试用例。
    
    /work/testng/src$ java org.testng.TestNG testng.xml
    
    验证输出。
    
      Manisha
      Inside testSalutationMessage()
      Hi!Manisha
      ===============================================
      Suite1
      Total tests run: 2, Passes: 2, Failures: 0, Skips: 0
      ===============================================
    
    您还可以检查测试输出文件夹。在Suite1文件夹下,您可以看到创建的两个 html 文件,exampletest1.html 和 exampletest2.html,如下所示 -
    套件测试 套件测试