覆盖某些测试的 TestNG 注释

这是问题。

我有一个具有 @AfterMethod 方法的类,该方法适用于我的所有测试方法,除了两个测试(业务案例是它删除了我不想在每个方法之后删除的内容)。有没有办法忽略特定测试方法的@afterMethod?

我有一个解决方案,但它不是那么优雅,任何其他 soultions 都会受到高度赞赏。

一种方法是让子类扩展父类,在类内部我可以覆盖@AfterMethod,但我更愿意将所有测试放在同一个地方。


MMTTMM
浏览 53回答 1
1回答

qq_笑_17

最简单的方法如下:定义一个自定义注释,使用时声明需要跳过特定测试方法的配置。@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());  }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java