TestNg多线程(Java)
我正在尝试使用TestNGTestNg多线程(Java),java,concurrency,testng,Java,Concurrency,Testng,我正在尝试使用TestNG@beforethod和@AfterMethod来设置/wrapup变量,以便在@Test中使用。这些变量定义为类字段。 我希望对不同的输入集同时运行此测试,例如通过使用@DataProvider和@test(DataProvider=“dp”,invocationCount=1,threadPoolSize=5) 我需要做什么才能使单个测试调用的@BeforeMethod/@test/@AfterMethod都在同一个类实例中运行,而并发测试都在该类的不同实例中运行
@beforethod
和@AfterMethod
来设置/wrapup变量,以便在@Test
中使用。这些变量定义为类字段。我希望对不同的输入集同时运行此测试,例如通过使用
@DataProvider
和@test(DataProvider=“dp”,invocationCount=1,threadPoolSize=5)
我需要做什么才能使单个测试调用的@BeforeMethod/@test/@AfterMethod
都在同一个类实例中运行,而并发测试都在该类的不同实例中运行
在下面的示例中,我是否必须使eyes和webDriver成为所描述的ThreadLocal对象,或者有更简单的方法来实现这一点
class myClass{
private Eyes eyes;
private WebDriver webDriver;
@BeforeMethod
public void beforeEachTest(ITestResult result) {
eyes = new Eyes(runner);
webDriver = new ChromeDriver();
}
@DataProvider(name = "dp", parallel = true)
public Object[][] dp() {
Object[][] testedUrls = new Object[][] {
{"url1"},
{"url2"}
};
return testedUrls;
}
@Test(dataProvider = "dp", invocationCount = 1, threadPoolSize = 5)
public void test(String testedUrl) {
eyes = new Eyes(runner);
WebDriver driver = eyes.open(webDriver);
}
@AfterMethod
public void afterEachTest(ITestResult result) {
boolean testFailed = result.getStatus() == ITestResult.FAILURE;
if (!testFailed) {
eyes.closeAsync();
} else {
eyes.abortAsync();
}
webDriver.quit();
}
}