3

我在 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 约定。

4

2 回答 2

3

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

但是,绝对有可能依赖于来自不同类的组。如果你想使用 XML,这是文档:http: //testng.org/doc/documentation-main.html#dependencies-in-xml

于 2013-08-20T21:19:11.943 回答
1

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

于 2013-08-21T00:26:49.863 回答