Моя проблема заключается в том, что у меня есть два разных типа тестов, которые выполняются с использованием Cucumber BDD с Java, Maven и JUnit.
В некоторых функциях, связанных с пользовательским интерфейсом, мне нужно выполнять некоторые действия перед каждымодин сценарий, такой как раскрутка виртуальных машин, например:
public class StepDefinitions {
@Before
protected void setUp(Scenario scenario) throws MalformedURLException {
//Create browser resources here for all of my UI related scenarios
}
Однако в тестах, не связанных с пользовательским интерфейсом, таких как тесты API, мне не нужно, чтобы эти браузеры запускались.Следовательно, мне действительно нужно другое поведение для метода @Before, называемого setUp .
Проблема, с которой я сталкиваюсь, заключается в том, что кажется, что ловушка @Before работает для каждого метода тестирования, даже если эти методы находятся в разных классах.В результате, независимо от того, что я пытаюсь, ресурсы браузера всегда создаются, даже для тестов API, которые не нуждаются в браузерах.
Вот что я попробовал без успеха:
Я создал совершенно отдельный файл функций и файл StepDefinitions для тестов API.Файл определений не имеет ссылки на метод @Before.Тем не менее, @Before из UI тестов определений шагов все еще выполняется для функций API.Вот пример того, как я разделил файлы (раньше у меня они были в одном и том же пакете, хотя изображение показывается в разных пакетах): https://screencast.com/t/ht5Jz4cLC
Я пытался создатьновые пакеты для типов тестов, таких как .api и .ui.Это работает, когда я бегу через IntelliJ, но не работает, когда я выполняю «mvn test».Кажется, что тесты не найдены или не выполнены.Вот как выглядит эта настройка: https://screencast.com/t/uSlB4sYTFm
Я попытался установить статическое свойство в одном из моих методов тестирования, чтобы определить, есть ли у меня тест API, а затем обновить реализацию в setUp() на основании этого.Это, конечно, не сработало, потому что setUp () выполняется перед фактическим тестом, который знает, является ли это тестом UI или API.
Есть ли способ изменить поведение setUp в автоматическом режиме, чтобы он выполнял / не выполнял соответствующую логику в зависимости от типа теста (API / UI)?