亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

覆蓋某些測試的 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 關注
  • 98 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號