TestNG - 如何通过testng.xml设置运行@Test方法的顺序?

时间:2012-07-25 15:45:55

标签: java ubuntu intellij-idea testng

我的@Test课程中有30个@Test方法和2个 Java 方法。 我需要在具体的@Test方法之后运行这两个 Java 方法,例如, TestMethod5()。 我怎么能这样做?

例如:

@Test
public void TestMethod5() {

/* compiled code */

}

public void Method1(){/* compiled code */};
public void Method2{/* compiled code */};

需要2种方法:

  

1)使用testng.xml
  2)使用Intellij IDEA

     

注意:@BeforeMethod@AfterMethod仅适用于 extends   classname 命令。这两个Java方法检查渲染   使用assertTrue()方法的按钮和标签,所以我不想弄乱我的   与他们一起的基类。


是的,这些方法都是测试的一部分(以及未来的类似测试),但我不能只复制它们的内容并粘贴到我想要的每个方法中......然后@Test方法将被混乱(大代码)我只需要检查这些方法中标签和按钮的渲染:

 public void method1_ButtonsTest() {

  assertTrue1();
  assertTrue2();

 }


 public void method2_LabelsTest() {

  assertTrue3();
  assertTrue4();
 }


@Test
public void Test1();

@Test
public void Test2();

@Test
public void Test3();

@Test
public void Test4();

@Test
public void Test5();

@Test
public void Test6();


@Test
public void Test7();

@Test
public void Test8();

2 个答案:

答案 0 :(得分:1)

为什么不能只调用这些方法?

@Test public void testMethod5() {
    ...
    method1();
    method2();
}

答案 1 :(得分:0)

如果您不想修改基类并且也不想直接在测试中调用方法,那么您可以将另一个@AfterMethod添加到测试类中,并仅运行您调用的测试用例的方法out,然后调用基类中的@AfterMethod,如下所示:

@AfterMethod(alwaysRun = true)
public void postTestCase(ITestResult _result) {
    if (_result.getMethod().getMethodName().equals("Test1")){
          System.out.println("Do something here...");
    }
    //Call the @AfterMethod in the base class
    super.postTestCase(_result);
}