Выполнение метода @BeforeClass в TestNG во время наследования - PullRequest
0 голосов
/ 15 ноября 2018

Я только начал использовать TestNG, и у меня возник вопрос. Если класс A имеет метод @BeforeSuite и класс B наследует класс A, как показано в следующем примере:

файл класса A:

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

файл класса B:

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

Итак, в этом сценарии @BeforeSuite из класса A наверняка запустится, когда я попытаюсь выполнить ClassB:executeTest(). Можно ли как-нибудь отключить запуск метода @BeforeSuite, не исключая наследования и не отключая метод @Test?

1 Ответ

0 голосов
/ 15 ноября 2018

Вы можете переопределить метод, как в примере ниже. @BeforeSuite базового класса в этом случае не будет выполнено.

TestA:

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");
    }
}

TestB:

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
===============================================
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...