TestNg多线程(Java)

TestNg多线程(Java),java,concurrency,testng,Java,Concurrency,Testng,我正在尝试使用TestNG@beforethod和@AfterMethod来设置/wrapup变量,以便在@Test中使用。这些变量定义为类字段。 我希望对不同的输入集同时运行此测试,例如通过使用@DataProvider和@test(DataProvider=“dp”,invocationCount=1,threadPoolSize=5) 我需要做什么才能使单个测试调用的@BeforeMethod/@test/@AfterMethod都在同一个类实例中运行,而并发测试都在该类的不同实例中运行

我正在尝试使用TestNG
@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();
    }
}