按预期顺序运行依赖和独立测试方法

2024-01-08

我想按顺序执行测试方法。我在 testng.xml 中使用了类,并将保留顺序设置为 true。

<test name="group-test" preserve-order="true" >
    <classes>
        <class name="com.dependency.ClassA">
            <methods>
                <include name="create"/>
                <include name="enter"/>
                <include name="delete"/>
            </methods>
        </class>
    </classes>
</test>

我的测试课是

public class ClassA {


@Test()
public void Create() throws Exception
{
    System.out.println("in method create");

}   
@Test(dependsOnMethods= "Create")
public void Enter() throws Exception
{
    System.out.println("in method Enter");

}
@Test()
public void delete() throws Exception
{
    System.out.println("in method delete");

}

执行测试后我的输出是
在方法创建中,
在方法删除中,
在方法中输入

但我想要的是首先执行“创建”然后“输入”然后“删除”方法。这里delete是一个独立的测试方法。

我读到谷歌群组问题 https://groups.google.com/d/msg/testng-users/nKJQExG7yk4/f4cYJ4Q3aWQJCedric Beust 提到你可以使用依赖OR在 testng.xml 中显式包含测试方法。我不明白为什么要强制执行?如果我想按照我想要的任何顺序一起执行独立和相关测试方法怎么办?我观察到首先执行独立方法,然后执行依赖方法。


理想情况下,依赖关系不应用于保留顺序,而应在前一个方法失败时跳过测试。 TestNG 的这种强制措施造成了很多麻烦!


我正在努力解决同样的主要(我必须说是明显的)测试缺陷。到目前为止我发现的最好的解决方案是使用优先级。 EG @Test(priority = 10),然后下一个测试@Test(priority = 20),等等。到目前为止我找到的文档和网上搜索都说使用@Test(priority = 1),然后@Test(priority = 2),但是你会遇到明显的未来维护问题,每次在中间某处添加一个测试时都必须重新编号所有测试......所以这个 10、20 等的解决方案要好得多,因为它至少允许您可以在 test1 和 test2 之间添加 @Test(priority = 11)、12 等。确实有效,我已经验证过了。幸运的是,testng 不强制执行 1、2、3,否则我们真的会有麻烦了!哦,顺便说一句,如果您有组和方法依赖性(除非需要,否则不应在所有测试中使用它们!)那么它看起来就像 @Test(priority = 10, groups = "login"), @Test(priority = 20 ,组=“登录”)等。另外,似乎您已经知道了,但对于其他可能想知道的人来说,请记住是否使用依赖项来设置测试运行顺序,那么如果一个失败,则跳过之后的所有测试 - 这根本不是您想要的。不管怎样,希望这能帮助你摆脱困境,至少在更好的解决方案出现之前是这样。祝你好运!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按预期顺序运行依赖和独立测试方法 的相关文章

随机推荐