TestNG - 基本注解 - Parameters

  • 简述

    @Parameters 描述了如何将参数传递给 @Test 方法。我们可以通过两种方式为测试方法提供参数值:
    • 通过 testng XML 配置文件
    • 通过数据提供者
    以下是@Listeners 注解支持的属性列表:
    属性 描述
    value
    用于填充此方法参数的变量列表。
    @Parameters 注释可以放置在以下位置:
    • 在任何已经有 @Test、@Before/After 或 @Factory 注释的方法上。
    • 在测试类的最多一个构造函数上。每当需要实例化您的测试类时,TestNG 将使用初始化为 testng.xml 中指定值的参数调用此特定构造函数。此功能可用于将类中的字段初始化为随后将被测试方法使用的值。
  • 创建测试用例类

    让我们看看如何使用@Parameters注解
    • 创建一个 java 测试类,比如说, TestAnnotationParameter.java/work/testng/src.
    • 将测试方法 testparameter() 添加到您的测试类。
    • 向方法 testparameter() 添加注解 @Test。指定Java 方法的参数firstName应接收名为first-name的 XML 参数的值。此 XML 参数在 testng.xml 中定义
    以下是TestAnnotationParameter.java 的内容。
    
      import org.testng.annotations.Test;
      import org.testng.annotations.Parameters;
      public class TestAnnotationParameter {
        @Parameters({ "first-name" })
        @Test
        public void testparameter(String firstName) {
          System.out.println("Invoked method testparameter with string " + firstName);
        }
      }
    
  • 创建 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">
      <parameter name="first-name"  value="JC2182"/>
      <test thread-count="5" name="Test">
        <classes>
          <class name="TestAnnotationParameter"/>
        </classes>
      </test> <!-- Test -->
    </suite> <!-- Suite -->
    
    使用 javac 编译测试用例。
    
    /work/testng/src$ javac TestAnnotationParameter.java
    
    现在,运行 testng.xml,它将运行 <test> 标记中定义的测试用例。
    
    /work/testng/src$ java org.testng.TestNG testng.xml
    
    验证输出。
    
      Invoked method testparameter with string JC2182
    ===============================================
    Suite
    Total tests run: 1, Passes: 1, Failures: 0, Skips: 0
    ===============================================