0

我有以下套件 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 的所有测试,并且只有在切换到下一个之后,所以我们目前只有两个打开和活动的浏览器

4

2 回答 2

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>
于 2012-09-12T20:41:44.843 回答
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 {
............

您可以在图片上看到整个结构: 在此处输入图像描述

其实你可以在这里得到一些有用的信息

也看看这个话题。Prolly 它也很有用:JUnit:可以(应该)这样做吗?

希望这对你有帮助)

于 2012-09-12T12:35:39.473 回答