不同测试中常用的注解 类
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
使用 ITestListener
和 IClassListener
的实现,您可以执行以下操作。 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 {
// ........
}
我对 @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
使用 ITestListener
和 IClassListener
的实现,您可以执行以下操作。 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 {
// ........
}