继承的@BeforeTest方法会运行多次吗?

问题描述 投票:1回答:1

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

当我运行以下代码时,“执行测试前”文本仅打印一次。尽管两个测试类都继承了此方法。

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>
selenium testng testng-annotation-test
1个回答
1
投票

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

Master Test Class:

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

}

Test Class-1:

public class TestClass1 extends MasterClass{

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

Test Class-2:

public class TestClass2 extends MasterClass{


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

TestNG.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)

希望它会帮助您。

© www.soinside.com 2019 - 2024. All rights reserved.