我有以下套件xml,用于使用Webdriver运行UI测试:
<suite name="test suite" verbose="3" parallel="classes" thread-count="2">
<test name="extended_smoke_test_suite">
<listeners>
<listener
...
</listener>
</listeners>
<groups>
<run>
<include name="somegroup1" />
<include name="somegroup2" />
</run>
</groups>
<packages>
<package name="tests.*" ></package>
</packages>
</test>
当我运行这个套件时,它启动了几个浏览器(超过2个),我可以发现它只能在其中两个浏览器中运行。 看起来它启动了一些测试类(TestClass1),执行一个测试方法,然后切换到另一个类(TestClass2)。在TestClass2中完成测试方法后,它返回TestClass1并继续它 由于我有很多测试类,因此会打开多个浏览器。
有没有办法“说”TestNG从TestClass1执行所有测试,只有在切换到下一个之后,所以我们现在只有两个打开的和活动的浏览器
答案 0 :(得分:0)
在我看来,要解决此问题,您应该在maven surefire插件方向进行调查。 目前我用它来构建我的测试套件。
我本地模块中的pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.11</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>2.12</version>
</dependency>
</dependencies>
<configuration>
<!--<includes>-->
<!--<include>**/*.class</include>-->
<!--</includes>-->
<excludedGroups>com.exadel.rms.selenium.SeleniumTests</excludedGroups>
</configuration>
</plugin>
我使用
注释我的测试类 @Category(SeleniumTests.class)
public class HomePageTestSuite extends BaseSeleniumTest {
............
你可以在图片上看到整个结构:
实际上,您可以获得here
的一些有用信息还要看这个主题。 Prolly它也很有用:JUnit: Can (should) this be done?
希望这可以帮助你)
答案 1 :(得分:0)
您已设置TestNG配置以并行运行测试:
<suite name="test suite" verbose="3" parallel="classes" thread-count="2">
如果你只有两个类:TestClass1和TestClass2,那么TestNG将创建2个线程,并在一个线程中调用TestClass1的测试,在另一个线程中调用TestClass2。
如果您希望TestClass2在TestClass1之后运行,您有几个选项:
1.使类TestClass2依赖于TestClass1。这里有多个选项,因此请参阅TestNG文档的Dependcies部分。
2.设置thread-count="1"
和parallel="false"
(或删除并行属性)。另外,请确保没有preserve-order="false"
并将TestClass2放在xml中的TestClass1之后。
<test name="extended_smoke_test_suite">
<classes>
<class name="test.TestClass1"/>
<class name="test.TestClass2"/>
</classes>
</test>