有没有办法跨TestNG中的测试跨越依赖?

时间:2013-08-20 20:11:45

标签: java automated-tests testng

我正在使用TestNG 6.8.5。有没有办法跨测试跨越dependsOnGroups或dependsOnMethods,而不是只在一个测试中?

我有一个像这样配置的套件,有两个测试和一组其他测试:

<suite name="ConfigurationSuite">

    <test name="DeviceMgmtTest_Setup" >
        <classes>
            <class name="com.yay.DeviceMgmtTest">
                <methods>
                    <include name="createDevice" />
                    <include name="discoverDevice" />
                </methods>
            </class>
        </classes>
    </test>

    <!-- A whole bunch of other very sequential
         and long-running tests go here... -->

    <test name="DeviceMgmtTest_TearDown" >
        <classes>
            <class name="com.yay.DeviceMgmtTest">
                <methods>
                    <include name="deleteDevice" />
                </methods>
            </class>
        </classes>
    </test>

</suite>

我的测试类的配置方法如下:

@Test(groups = { "setup" })
public void createDevice() {
    // do something
}

@Test(groups = { "setup" })
public void discoverDevice() {
    // do something
}

@Test(groups = { "tearDown" }, dependsOnGroups = { "setup" })
public void deleteDevice() {
    // When TestNG reaches this method I get a
    // group "setup" does not exist type exception (see below)
}

但是当我运行套件时,dependsOnGroups注释失败并出现如下错误:

[ERROR] org.testng.TestNGException:
[ERROR] DependencyMap::Method .... DeviceMgmtTest depends on nonexistent group "setup"

也许我没有正确理解如何配置我的套件(我是TestNG的新手),但将这些关注区域分成单独的测试对我来说是有意义的。

感谢您的任何指导或建议!

编辑:我正在考虑的一个解决方案是抓取TestNG ITestContext并导航到父套件,然后检查以前测试的状态。我只是觉得可能会有更优雅的TestNG惯例。

2 个答案:

答案 0 :(得分:3)

不可能依赖不同类别的方法。

但是,绝对可以依赖来自不同班级的小组。如果您想使用XML,那么这是其文档:http://testng.org/doc/documentation-main.html#dependencies-in-xml

答案 1 :(得分:1)

我认为根据你的示例代码是什么..你想要的是你的拆解应该在你的设置和测试之后执行。您可能想完全放弃并尝试使用preserve-order = true。因此,您甚至无需设置它,因为它是默认设置,并且testng按照您在xml中找到的顺序运行测试。