0

使用TestNG时,如果多个测试类继承一个包含@BeforeTest方法的类,在测试用例中调用每个类时,它会只运行一次还是每次都运行?

当我运行下面的代码时,文本“BEFORE TEST EXECUTED”只打印一次。虽然两个测试类都继承了这个方法。

public class masterclass
{

@BeforeTest
public void show()
 {
 sout("BEFORE TEST EXECUTED")
 }
}

测试类 1:

public class TestClass1 extends masterclass
 {
    @Test
    public void testA1() { }
}

测试类 2:

public class TestClass2 extends masterclass
{
    @Test
    public void testB1() {}    
}

测试用例的 XML:

<suite  name="testSuite">
<test name="MytestCase" >
    <classes>
        <class name="com.ui.test.TestClass1" />
        <class name="com.ui.test.TestClass2" />
    </classes>
</test>
</suite>
4

1 回答 1

3

在您的情况下,@BeforeTest将运行一次。它将查看并在标记Testng.xml下的所有测试用例之前运行。<test>

大师测试班:

public class MasterClass {
    @BeforeTest
    public void show()
     {
     System.out.println("BEFORE TEST EXECUTED");
     }

}

测试类 1:

public class TestClass1 extends MasterClass{

      @Test
       public void test()
          {
          System.out.println("Priority 0 (Default in Class 1)");
          }
   }

测试类 2:

public class TestClass2 extends MasterClass{


      @Test(priority = 0)
       public void testin_LearningTestNGTest2_Class()
          {
          System.out.println("Priority 0 (Class 2)");
          }
   }

测试NG.xml:

<suite  name="testSuite">
<test name="MytestCase">
    <classes>
        <class name="com.ui.test.TestClass1" />
        <class name="com.ui.test.TestClass2" />
    </classes>
</test>
</suite>

输出:

BEFORE TEST EXECUTED
Priority 0 (Default in Class 1)
Priority 0 (Class 2)

希望它会帮助你。

于 2019-12-17T09:38:48.970 回答