这是问题。
我有一个具有@AfterMethod方法的类,该方法适用于除两个测试之外的所有测试方法(业务案例是它删除了我不想在每个方法之后删除的内容)。是否可以忽略特定测试方法的@afterMethod?
我有一个解决方案,但它不是那么优雅,任何其他灵魂都将受到高度重视。
做到这一点的一种方法是让子类扩展父类,并且在类内部我可以覆盖@AfterMethod,但我希望将所有测试都放在同一位置。
答案 0 :(得分:0)
最简单的方法如下:
@Test
方法。下面是一个示例,显示了所有这些操作。
标记注释,指示将跳过配置方法。
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.TYPE;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@Target({METHOD, TYPE})
public @interface SkipConfiguration {
}
样本测试班
import java.lang.reflect.Method;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test;
public class TestClassSample {
@Test
@SkipConfiguration
public void foo() {}
@Test
public void bar() {}
@AfterMethod
public void teardown(Method method) {
SkipConfiguration skip = method.getAnnotation(SkipConfiguration.class);
if (skip != null) {
System.err.println("Skipping tear down for " + method.getName());
return;
}
System.err.println("Running tear down for " + method.getName());
}
}