TestNG - 基本注解 - Factory

  • 简述

    @Factory 注解方法允许在运行时根据某些数据集或条件创建测试。该方法必须返回 Object[]。
  • 创建测试用例类

    • 创建一个 java 测试类,比如说, SimpleTestFactory.java.
    • 将测试方法 testMethod() 添加到您的测试类。
    • 向方法 testMethod() 添加注解@Test。
    在其中创建一个名为 SimpleTestFactory.java 的 java 类文件 /work/testng/src.
    
      import org.testng.annotations.Test;
      public class SimpleTestFactory {
        @Test
        public void testMethod(){
          System.out.println("Simple Test Method.");
          }
      }
    
  • 创建工厂测试类

    • 创建另一个 Java 类,例如, TestAnnotationFactory.java/work/testng/src.
    • 将工厂方法 factoryMethod() 添加到您的测试类。工厂方法必须返回一个 Object 类数组( Object [] )
    • 向方法 factoryMethod() 添加注解@Factory。
    以下是TestAnnotationFactory.java 的内容:
    
      import org.testng.annotations.Test;
      import org.testng.annotations.Factory;
      public class TestAnnotationFactory {
        @Factory
        public Object[] factoryMethod() {
          return new Object[]{
            new SimpleTestFactory(),
            new SimpleTestFactory()
            };
        }
      }
    
  • 创建 testng.xml

    接下来,让我们在其中创建 testng.xml 文件 /work/testng/src, 执行测试用例。此文件以 XML 格式捕获您的整个测试。该文件使您可以轻松地在一个文件中描述所有测试套件及其参数,您可以将其签入代码存储库或通过电子邮件发送给同事。它还可以轻松提取测试的子集或拆分多个运行时配置(例如,testngdatabase.xml 将仅运行测试您的数据库的测试)。
    
      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
      <suite name="Suite">
        <test thread-count="5" name="Test">
          <classes>
            <class name="TestAnnotationFactory"/>
          </classes>
        </test> <!-- Test -->
      </suite> <!-- Suite -->
    
    使用 javac 编译测试用例。
    
    /work/testng/src$ javac SimpleTestFactory.java TestAnnotationFactory.java
    
    现在,运行 testng.xml,它将运行 <test> 标记中定义的测试用例。如您所见,来自 SimpleTestFactory 类的测试方法被执行了两次。
    
    /work/testng/src$ java org.testng.TestNG testng.xml
    
    验证输出。
    
      Simple Test Method.
      Simple Test Method.
      ===============================================
      Suite
      Total tests run: 2, Passes: 2, Failures: 0, Skips: 0
      ===============================================