Localhost で Java、Gradle、TestNG、Selenium Hub、および Node を使用しており、5 つのテストを並行して実行しようとしています。以下はサンプル コードです。
これは基本クラスです:
package tests.temp;
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
public class TestBase
{
protected ThreadLocal<RemoteWebDriver> threadDriver = null;
@BeforeMethod
public void setUp() throws MalformedURLException {
threadDriver = new ThreadLocal<RemoteWebDriver>();
DesiredCapabilities dc = new DesiredCapabilities();
FirefoxProfile fp = new FirefoxProfile();
dc.setCapability(FirefoxDriver.PROFILE, fp);
dc.setBrowserName(DesiredCapabilities.firefox().getBrowserName());
threadDriver.set(new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), dc));
}
public WebDriver getDriver() {
return threadDriver.get();
}
@AfterMethod
public void closeBrowser() {
getDriver().quit();
}
}
1 テストの例を次に示します。その他のテストは、名前と番号を除いて同じです。
package tests.temp;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.testng.annotations.Test;
public class Test01 extends TestBase
{
@Test
public void testLink()throws Exception
{
getDriver().get("http://www.yandex.ru");
WebElement textBox = getDriver().findElement(By.name("text"));
textBox.sendKeys("First test");
System.out.println("First test thread-count=\"1\"");
}
}
この 5 つのテストすべてを含む、スイートを含む XML ファイル:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Parallel test runs" parallel="tests" thread-count="1">
<test name="Test_01">
<classes>
<class name="tests.temp.Test01" ></class>
</classes>
</test>
...
<test name="Test_05">
<classes>
<class name="tests.temp.Test05" ></class>
</classes>
</test>
</suite>
そして最後の - Suite runner を含む XML ファイル:
<suite name="Parallel Test Suite">
<suite-files>
<suite-file path="./testRunner.xml" />
</suite-files>
</suite>
問題は、thread-count="1" を使用した場合、TeamCity のビルド ログは正常に見えますが、もちろんテストは順番に実行されます。 TeamCity スレッド = 1
thread-count="2" またはその他の値の場合 - ビルド ログがわかりにくく、Tests カウンターの値が正しくありません。しかし、IDEAでは、すべてがクールで正しいです! TeamCity スレッド = 2
誰もこの問題を解決する方法を知っていますか??