Automated tests testNG以特定的顺序执行testcase,并能够从特定的testcase开始

Automated tests testNG以特定的顺序执行testcase,并能够从特定的testcase开始,automated-tests,testng,Automated Tests,Testng,如何以特定的顺序执行testNG testcase,以及如何从特定的testcase开始执行 例如,如果您运行下面的套件 @Test public class Test1 { @Test public void test1() { System.out.println("test1"); } @Test(dependsOnMethod = "test1") public void test2() { System.out.println("test2"); } @Test(d

如何以特定的顺序执行testNG testcase,以及如何从特定的testcase开始执行

例如,如果您运行下面的套件

@Test
public class Test1 {
@Test
public void test1() {
    System.out.println("test1");
}

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

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

testcases的执行顺序始终是test1、test2、test3。但是有时候我想从test2而不是test1开始执行,也就是说,我想先运行test2,然后再运行test3,而不运行test1。如何实现这一点?

您可以使用一个
IAnnotationTransformer
,它将
@Test
enabled
属性设置为
false
。但是,您还必须调整依赖关系


我认为将此逻辑放在测试方法中可能更简单(如果某个条件为真,只需不执行任何操作,而不是运行测试及其断言).

我的建议是将您的测试添加到组中,然后通过指定
让我知道您是否需要进一步的帮助来使用testng.xml从外部控制行为。

简单的想法是设置不同测试的优先级;请记住,优先级的默认值为0

@Test(priority=1)
public void t1(){}

@Test
public void t0(){}

@Test(priority=2)
public void t2(){}

@Test(priority=3)
public void t3(){}
因此,执行顺序将是t0->t1->t2->t3。 t0首先执行,因为其优先级默认设置为0

希望这有帮助