不同测试中常用的注解 类

Common annotations used in different test classes

我对 @BeforeTest@BeforeMethod 等注释有疑问。是否可以设置全局注释,以便我所有的测试 classes 都将使用它们?我在我的框架中有超过 20 个测试 classes 和很多测试方法。每个测试 class 都有像 @BeforeTest@BeforeMethod 这样的先决条件,但对于每个测试 class,这个先决条件是相同的。所以我认为这可能是个好主意,编写一个通用的注释方法,可以在每个测试中使用 class.

使用继承使代码可重用。创建超级 class DefaultTestCase:

public class DefaultTestCase{
  @BeforeTest
  public void beforeTest() {
     System.out.println("beforeTest");
  }  
  @BeforeMethod
  public void beforeMethod() {
    System.out.println("beforeMethod");
  }  
}

并且每个测试用例 class 扩展了 DefaultTestCase:

public class ATest extends DefaultTestCase{
  @Test
  public void test() {
     System.out.println("test");
  }
  @Test
  public void anotherTest() {
     System.out.println("anotherTest");
  }
}

输出:

beforeTest
beforeMethod
test
beforeMethod
anotherTest

使用 ITestListenerIClassListener 的实现,您可以执行以下操作。 onTestStart 将在每个测试用例之前调用,onStart 将在您的套件中为 <test> 调用,并且 onBeforeClass 对每个 class.[=19 执行一次=]

public class MyListener implements ITestListener, IClassListener {
    
    @Override
    public void onStart(ITestContext context) {
        // Put the code in before test.
        beforeTestLogic();
    }

    @Override
    public void onBeforeClass(ITestClass testClass) {
        // Put the code in before class.
        beforeClassLogic();
    }

    @Override
    public void onTestStart(ITestResult result) {
        // Put the code in before method.
        beforeMethodLogic();
    }
}

现在将 @Listener 注释添加到所需的测试 classes:

@Test
@Listener(MyListener.class)
public class MyTest {
    // ........
}