为了账号安全,请及时绑定邮箱和手机立即绑定

覆盖某些测试的 TestNG 注释

覆盖某些测试的 TestNG 注释

MMTTMM 2023-03-02 10:37:30
这是问题。我有一个具有 @AfterMethod 方法的类,该方法适用于我的所有测试方法,除了两个测试(业务案例是它删除了我不想在每个方法之后删除的内容)。有没有办法忽略特定测试方法的@afterMethod?我有一个解决方案,但它不是那么优雅,任何其他 soultions 都会受到高度赞赏。一种方法是让子类扩展父类,在类内部我可以覆盖@AfterMethod,但我更愿意将所有测试放在同一个地方。
查看完整描述

1 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

最简单的方法如下:

  • 定义一个自定义注释,使用时声明需要跳过特定测试方法的配置。

  • @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());

  }

}


查看完整回答
反对 回复 2023-03-02
  • 1 回答
  • 0 关注
  • 52 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信