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

时间:2013-08-28 10:09:10

标签: testng

我想按顺序执行测试方法。我在testng.xml中使用了classes-order设置为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>

我的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");

}

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

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

我读了google group question,其中Cedric Beust提到你可以使用依赖 OR 在testng.xml中明确包含测试方法。我不明白为什么这是执法?如果我想以任何我想要的顺序一起执行独立和依赖的测试方法怎么办?我观察到首先执行独立方法,然后执行依赖方法。


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

1 个答案:

答案 0 :(得分:1)

我与同样的主要(我必须说明显)缺乏testng。到目前为止,我发现的最佳解决方案是使用优先级。 EG @Test(优先级= 10),然后下一次测试@Test(优先级= 20)等。到目前为止我发现的文档和互联网搜索都说使用@Test(优先级= 1),然后@Test(优先级= 2),但是你会遇到明显的未来维护问题,每次在中间添加一个测试时都必须对所有测试进行重新编号...所以这个10,20等的解决方案要好得多,因为它至少允许你可以在test1和test2之间添加@Test(优先级= 11),12等。它确实有效,我已经过验证。幸运的是,我们没有执行1,2,3或者我们真的遇到麻烦了!哦,顺便说一句,如果你有团队和方法的依赖(你不应该在所有测试中使用,除非需要!)然后它看起来像@Test(优先级= 10,组=&#34;登录&#34;) ,@ Test(优先级= 20,分组=&#34;登录&#34;)等。此外,它似乎你已经知道,但对于其他人可能想知道,请记住,如果依赖项用于设置测试运行排序然后如果一个失败然后所有测试被跳过 - 这根本不是你想要的。无论如何,希望这有助于让你解开,至少在一个更好的解决方案出现之前。祝你好运!