TestNG: @Test在类级别执行所有方法

6
我有一些需要按顺序运行的测试,所以我在它们的类中添加了@Test(singleThreaded = true)。
这个方法很好用,但问题是,使用 @Test 在类级别时,TestNG 将执行所有方法,即使它们没有 @Test 注释。因此,当我的团队中的某个人想要禁用一个测试时,他只会注释掉@Test 而不是整个方法,由于他不熟悉这种情况,这最终导致某些时间被浪费,因为应该被禁用的测试最终会导致构建失败。
有什么办法可以避免这种情况吗?
谢谢!
2个回答

3

有一种方法是教育团队 :)

您可以在要禁用的单个测试上添加新的注释,例如:下面的示例中,测试2将不会运行。

@Test(singlet..)
public class Testss {


    public void test1(){
        System.out.println("test1");
    }

    @Test(enabled=false)
    public void test2(){
        System.out.println("test2");
    }

    public void test3(){
        System.out.println("test3");
    }
}

3
如果按顺序执行测试很重要,我建议使用依赖项或优先级,而不是依赖于执行顺序和更改线程数。
@Test
public void method1() {
    System.out.println("This is method 1");
}

@Test(dependsOnMethods = { "method1" })
public void method2() {
    System.out.println("This is method 2");
}

或者

@Test(priority = 1)
public void method1() {
    System.out.println("This is method 1");
}

@Test(priority = 2)
public void method2() {
    System.out.println("This is method 2");
}

与之配合
@Test(enabled = false) //do not run this method as a test

并且/或者

<suite name="Suite" parallel="classes" thread-count="3">

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接