Это последняя часть моего цикла статей о ретроспективных уроках автоматизации. Мне кажется, я достаточно выразил свою философию тестирования и личный опыт. Последнее, чем я хочу поделиться, относится к проекту, с которым я работаю уже год, и касается создания автоматизированных проверок API бэкэнда, который мы сейчас разрабатываем. Мы пишем тесты на PHP во фреймворке Codeception. Я не буду углубляться в особенности фреймворка – я сфокусируюсь на базовых вещах. Итак, вот они – уроки по тестированию API, которые мне нелишним было бы знать заранее – до того, как я изрядно налажал.
Сразу скажу, что хакерством не занимаюсь, но начал изучать Winium, JUnit со всеми их возможностями.
Столкнулся вот с какой проблемой, делаю параметрическое тестирование на допустимые символы в окне авторизации и поле пароль не возвращает значение для сравнения. Вот сам тест
в Cucumber (в отличие от Junit) можно задать теги-хуки @Before или @After только единожды
Т.е. если в Junit такие теги выполняются в каждом классе с тестами, то в Cucumber их надо задать в отдельном классе с хуками только один раз и не нужно задавать в классах с реализацией шагов (например есть N кол-во классов со степами-тестами Cucumber)
В связи с этим у меня вопрос - а где тогда реализовывать запуск вебдрайвера и инициализацию Page object-страниц?
Если реализовывать его в хуках, непонятно как использовать драйвер и инициализированные page objects в тестах Given/When/Then в классах с шагами.
mvn compile && mvn package -Dmaven.test.skip=true && mvn test
У меня вываливается сообщение об ошибке
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
июл 12, 2019 2:15:13 PM org.junit.platform.launcher.core.DefaultLauncher handleThrowable
WARNING: TestEngine with ID 'junit-vintage' failed to discover tests
org.junit.platform.commons.JUnitException: Failed to parse version of junit:junit: 3.8.1
at org.junit.vintage.engine.JUnit4VersionCheck.parseVersion(JUnit4VersionCheck.java:54)
at org.junit.vintage.engine.JUnit4VersionCheck.checkSupported(JUnit4VersionCheck.java:37)
at org.junit.vintage.engine.JUnit4VersionCheck.checkSupported(JUnit4VersionCheck.java:32)
at org.junit.vintage.engine.VintageTestEngine.discover(VintageTestEngine.java:61)
at org.junit.platform.launcher.core.DefaultLauncher.discoverEngineRoot(DefaultLauncher.java:168)
at org.junit.platform.launcher.core.DefaultLauncher.discoverRoot(DefaultLauncher.java:155)
at org.junit.platform.launcher.core.DefaultLauncher.discover(DefaultLauncher.java:120)
at org.apache.maven.surefire.junitplatform.TestPlanScannerFilter.accept(TestPlanScannerFilter.java:56)
at org.apache.maven.surefire.util.DefaultScanResult.applyFilter(DefaultScanResult.java:102)
at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.scanClasspath(JUnitPlatformProvider.java:143)
at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:124)
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345)
at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418)