簡體   English   中英

繼承期間TestNG中@BeforeClass方法的執行

[英]@BeforeClass method execution in TestNG during inheritence

我剛剛開始使用TestNG,我有一個問題。 如果類A有一個@BeforeSuite方法並且類B繼承類A ,如下例所示:

A類文件:

class A
{
  @BeforeSuite
  public void beforeTest()
  {
    //something
  }
}

B類文件:

class B extends A
{
 @Test
 public void executeTest()
 {
  //something
 }
}

因此,在這種情況下,當我嘗試執行ClassB:executeTest()時, A類的@BeforeSuite肯定會運行。 有什么方法可以禁用@BeforeSuite方法的運行,而不排除繼承或禁用@Test方法?

您可以像下面的示例一樣覆蓋方法。 在這種情況下不會執行基類的@BeforeSuite

測試A:

import org.testng.annotations.BeforeSuite;
import org.testng.log4testng.Logger;

public class TestA {
    protected static Logger LOGGER = Logger.getLogger(TestA.class);

    @BeforeSuite
    public void beforeSuite() {
        LOGGER.warn("beforeSuite - TestA");
    }
}

測試B:

import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;

public class TestB extends TestA {

    @BeforeSuite
    public void beforeSuite() {
        LOGGER.warn("beforeSuite - TestB");
    }

    @Test
    public void executeTest() {
        LOGGER.warn("executeTest - TestB");
    }
}

運行 TestB 並檢查輸出:

[TestA] [WARN] beforeSuite - TestB
[TestA] [WARN] executeTest - TestB

===============================================
Default Suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM