在TestNG中精心运行测试类

时间:2013-11-18 03:51:25

标签: java unit-testing testing integration-testing testng

我在TestNG上运行我的集成测试套件并利用其注释。在简化的情况下,我有3个测试类,其中包含1个配置测试,还有一些可靠的配置测试。

TestClass1
  @Test()
  configureTestMethod() {}

  @Test(dependsOnMethods=["configureTestMethod"])
  testCase1_1() {}

  @Test(dependsOnMethods=["configureTestMethod"])
  testCase1_2() {}

TestClass2
  @Test()
  configureTestMethod() {}

  @Test(dependsOnMethods=["configureTestMethod"])
  testCase2_1() {}

  @Test(dependsOnMethods=["configureTestMethod"])
  testCase2_2() {}

TestClass3
  @Test()
  configureTestMethod() {}

  @Test(dependsOnMethods=["configureTestMethod"])
  testCase3_1() {}

  @Test(dependsOnMethods=["configureTestMethod"])
  testCase3_2() {}

我的问题是,当我运行所有这3个测试类时,它按以下顺序运行它: TestClass1.configureTestMethod(),TestClass2.configureTestMethod(),TestClass3.configureTestMethod(),TestClass1.testCase1_1(),TestClass1.testCase1_2(),TestClass2.testCase2_1(),TestClass2.testCase2_2(),... etc ... < / p>

我知道这是有道理的,因为在不同的类中configureTestMethod()之间没有依赖关系,因此对于TestNG,他们的订单不会计量。

如何在继续执行另一个测试类之前运行测试类的所有测试方法?

到目前为止我发现的方向:

  1. 在不同的测试类中定义configureTestMethod()之间的依赖关系。这意味着我无法运行单个测试类,因为它依赖于另一个测试类。

  2. 实现方法拦截器。我得到了三个configureTestMethod()方法,对我来说无关紧要。我想先运行他们的类方法,所以我确定如何在拦截器中控制它。

1 个答案:

答案 0 :(得分:0)

如果您创建了testing.xml文件,那么默认情况下,其中提到的所有测试类都将按照它们在那里提到的顺序运行。正是你想要的。