gpt4 book ai didi

java - 在 TestNG 中参数化 @BeforeMethod 方法

转载 作者:搜寻专家 更新时间:2023-11-01 02:35:32 25 4
gpt4 key购买 nike

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

这是代码

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[],但我不必从该方法返回任何测试类。

最佳答案

你可以使用@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>

关于java - 在 TestNG 中参数化 @BeforeMethod 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55294585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com