TestNg, аннотация "beforeTestMethod" и переопределение - PullRequest
2 голосов
/ 13 октября 2009

Для своих тестов я использую базовый класс MyTestBase, определяющий метод setup(), который выполняет некоторые базовые приготовления:

public class MyTestBase {
    @Configuration( beforeTestMethod=true )
    protected void setup() {
        // do base preparations
    }
}

Теперь у меня есть несколько более специфичных тестовых классов, которые нужно делать самостоятельно. Есть разные способы, как это реализовать.

Я мог бы использовать @Override:

public class MySpecialTestBase extends MyTestBase {
    @Override
    protected void setup() {
        super.setup();
        // do additional preparations
    }
}

... или я мог бы использовать отдельный метод настройки:

public class MySpecialTestBase extends MyTestBase {
    @Configuration( beforeTestMethod=true )
    protected void setupSpecial() {
        // do additional preparations
    }
}

Есть ли предпочтительный способ реализации этого?

1 Ответ

5 голосов
/ 13 октября 2009

Я бы предпочел использовать аннотацию @Configuration. @Override и super более хрупкие. Вы можете забыть позвонить super.setup() или позвонить не туда. Между тем, использование отдельного метода с @Configuration позволяет вам выбрать более подходящее наименование для дочернего метода установки, если необходимо, и вы получите порядок установки, гарантированный TestNG (родительский, а затем дочерний).

Еще два очка:

  1. Я бы сделал родительскую настройку final, чтобы запретить случайное переопределение.
  2. Я бы использовал @BeforeMethod аннотации. Они доступны с TestNG 5.0. Конечно, для более старых версий вы вынуждены использовать @Configuration.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...