我有一个简单的maven项目,有三个类文件。 当我运行 testng.xml 文件时,测试正在串联运行。
我尝试保持 parallel="classes", parallel="methods", parallel="tests" 但没有运气。 还尝试通过将testng版本从6.9.0更改为7.0.0来尝试,但没有起作用。
期望:
测试应并行运行
发生了什么事情:
测试按顺序运行
以下是我的项目和所有文件:
测试等级:1
public class TestOne {
private static WebDriver driver;
private static String baseURL;
@Test
public void launch() throws IOException {
baseURL = "http://www.gmail.com";
System.setProperty("webdriver.chrome.driver", "path");
WebDriver driver = new ChromeDriver();
driver.get(baseURL);
driver.quit();
}
}
测试等级:2
public class TestTwo {
private static WebDriver driver;
private static String baseURL;
@Test
public void launch() throws IOException {
baseURL = "http://www.gmail.com";
System.setProperty("webdriver.chrome.driver", "path");
WebDriver driver = new ChromeDriver();
driver.get(baseURL);
driver.quit();
}
}
测试等级:3
public class TestThree {
private static WebDriver driver;
private static String baseURL;
@Test
public void launch() throws IOException {
baseURL = "http://www.gmail.com";
System.setProperty("webdriver.chrome.driver", "path");
WebDriver driver = new ChromeDriver();
driver.get(baseURL);
driver.quit();
}
}
TestNG xml:
!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"
suite name="Test" parallel="tests" thread-count="3" data-provider-thread-count="5"
<test name="Launch">
<classes>
<class name="test.demo.grid.TestOne" />
<class name="test.demo.grid.TestTwo" />
<class name="test.demo.grid.TestThree" />
</classes>
</test>
版本:
硒-爪哇 = 3.4.0
测试= 6.14.3
====
==================================请让我知道我该如何解决它。
谢谢!
首先尝试一个简单的示例,记录每个测试方法上的线程 ID,而无需调用 ChromeDriver
long id = Thread.currentThread().getId();
System.out.println("Sample test-method " + testName
+ ". Thread id is: " + id);
https://howtodoinjava.com/testng/testng-executing-parallel-tests/
如果它并行记录了ID,则可能与ChromeDriver有关
<test>
标签只是您testng.xml
中的一个,这就是并行执行不起作用的原因。
在您的情况下,您需要使用parallel="classes"
并且所有类都将并行执行。
编辑:
您可以使用测试.xml作为:
<test name="Launch">
<classes>
<class name="test.demo.grid.TestOne" />
</classes>
</test>
<test name="Second test">
<classes>
<class name="test.demo.grid.TestTwo" />
</classes>
</test>
<test name="Third test">
<classes>
<class name="test.demo.grid.TestThree" />
</classes>
</test>
现在在测试中使用parallel="tests"
.xml
尝试使用parallel="classes" 并且不使用数据提供程序线程计数="5",因为您在此处没有使用数据提供程序。
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Test" parallel="classes" thread-count="3">
<test name="Launch">
<classes>
<class name="test.demo.grid.TestOne" />
<class name="test.demo.grid.TestTwo" />
<class name="test.demo.grid.TestThree" />
</classes>
</test>
</suite>
你可以试试:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" configfailurepolicy="continue">
<parameter name="parallelSetup" value="tests" />
<parameter name="threadsNumber" value="3" />
<test name="Launch">
<classes>
<class name="test.demo.grid.TestOne" />
<class name="test.demo.grid.TestTwo" />
<class name="test.demo.grid.TestThree" />
</classes>
</test>
</suite>
在每个类中添加@BeforeClass注释,并在该注释中初始化WebDriver 并在每个班级@AfterClass概念中关闭驱动程序