4

我有一个用于我的测试的基础测试类,它在每次测试之前进行初始化工作。

这是代码

public class BaseTestParameters {

  MyObj myObj;

  @DataProvider(name = "apiType")   
  public static Object[][] createData() {

     return new Object[][] {{"type", "1"},{"type","2"}};   
  } 

  @BeforeMethod()   
  @Factory(dataProvider = "apiType")   
  public void setup(String type,String param) throws Exception {

     myObj = createMyObject(param);

  }
}

我所有的测试类都扩展了这个基类,他们使用myObj测试。

myObj有两种不同的创建方式(取决于参数)。所有测试将运行两次。一种与每种构成方式myObj

如何启用此方案?使用@Factory注释意味着我需要Object[]从该方法返回,但我不必从该方法返回任何测试类。

4

1 回答 1

5

您可以使用@Parameters注释,但您必须在testng,xml其中指定值意味着您必须testng.xml为每组参数设置单独的值。

这是示例:

AppTest.java

public class AppTest {
    @Parameters({"par1", "par2"})
    @BeforeMethod()
    public void setUp(String a, String b) {
        System.out.println("a = [" + a + "], b = [" + b + "]");
    }

    @Test
    public void testApp() {
    }
}

testng.xml

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1" verbose="1" >

    <test name="Run1" >
        <parameter name="par1"  value="val"/>
        <parameter name="par2"  value="anotherval"/>
        <packages>
            <package name="dummy.java" />
        </packages>
    </test>

    <test name="Run2" >
        <parameter name="par1"  value="newValue"/>
        <parameter name="par2"  value="yetAnotherVal"/>
        <packages>
            <package name="dummy.java" />
        </packages>
    </test>
</suite>
于 2019-03-22T07:49:41.780 回答