Testng, аннотация «beforetestmethod» и переопределение
Вопрос
Для моих тестов я использую базовый класс 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
}
}
Есть ли предпочитаемый способ реализовать это?
Решение
Я бы предпочел использовать @Configuration
аннотация. @Override
а также super
более хрупкие. Вы можете забыть позвонить super.setup()
, или назовите это в неправильном месте. Между тем, используя отдельный метод с @Configuration
Позволяет вам выбрать более подходящее именование для метода настройки детей, если это необходимо, и вы получаете заказ на установку, гарантированную Testng (родитель, тогда ребенок).
Еще два очка:
- Я бы сделал родительский настройку
final
Чтобы запретить случайное переопределение. - Я бы использовал
@BeforeMethod
аннотации. Они доступны с тех пор, как Testng 5.0. Конечно, для старых версий, которые вы вынуждены использовать@Configuration
.