Testng, аннотация «beforetestmethod» и переопределение

StackOverflow https://stackoverflow.com/questions/1559343

  •  21-09-2019
  •  | 
  •  

Вопрос

Для моих тестов я использую базовый класс 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 (родитель, тогда ребенок).

Еще два очка:

  1. Я бы сделал родительский настройку final Чтобы запретить случайное переопределение.
  2. Я бы использовал @BeforeMethod аннотации. Они доступны с тех пор, как Testng 5.0. Конечно, для старых версий, которые вы вынуждены использовать @Configuration.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top