Как стать автором
Обновить

Комментарии 15

And type to input with name "userName" text: "riskmarket.testoviy2016@yandex.ru"
And type to input with name "password" text: "l0dcfJMB”
When type to input with name "lastName" text: "TESTOVIY"
And type to input with name "firstName" text: "TEST"


То, что вы делаете, считается антипаттерном в BDD. Сценарии должны быть на языке домена:
Given there is user Alice
В целом BDD это не совсем про тесты — это про документацию и коммуникацию, скорее. Из всех фреймворков поэтому давно поудаляли встроенные степы «я нажимаю на кнопку».
Хороший наброс. Приложите, пожалуйста, пруф, в частности, названия компаний и/или фреймворков, в которых «давно поудаляли встроенные степы «я нажимаю на кнопку»». Спасибо.
Так что это только вопрос времени, когда до всех [your language]-кукумберов дойдет, что эти степы не нужны в BDD-фреймворке.
В целом согласен. Но считаю, что статья по-прежнему актуальна для джунов (в том числе меня), ибо писалась именно с целью разжевать как начать писать тесты на кукумбере с селенидом. Содержимое статьи никак не мешает использовать кукумбер правильным способом.
Скажите, а какой коммандой запустить эти тесты из консоли?
Хороший вопрос. В первой части, в simple варианте, запускать можно только фичу (smoketest#1.feature). И как запустить ее из командной строки я не знаю. Во второй части, в complex варианте, когда присутствует класс-раннер, сработает команда mvn test (или mvn clean test), потому что IDEA понимает, что тест — это класс-раннер, SmokeTest.java. Вообще говоря, simple вариант не несет себе практической ценности, только как обучение. В реальности всегда нужен будет класс-раннер, потому что без него не получится сформировать отчет о тестах. Так что посмотрите как создается класс-раннер и запускайте указанной командой — mvn clean test. Ну и если дойдете до создания beautiful reports, то используйте команду mvn clean install
Я запустил complex вариант коммандой mvn test и получил ошибку, подскажите, пожалуйста, как это исправить
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.417 sec <<< FAILURE!
initializationError(ru.riskmarket.runners.SmokeTest) Time elapsed: 0.01 sec <<< ERROR!
java.lang.UnsupportedClassVersionError: cucumber/runtime/java8/ConstantPoolTypeIntrospector: Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at cucumber.runtime.io.ResourceLoaderClassFinder.loadClass(ResourceLoaderClassFinder.java:38)
at cucumber.runtime.io.ResourceLoaderClassFinder.getDescendants(ResourceLoaderClassFinder.java:26)
at cucumber.runtime.Reflections.instantiateSubclasses(Reflections.java:28)
at cucumber.runtime.Runtime.loadBackends(Runtime.java:98)
at cucumber.runtime.Runtime.(Runtime.java:65)
at cucumber.api.junit.Cucumber.createRuntime(Cucumber.java:78)
at cucumber.api.junit.Cucumber.(Cucumber.java:58)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:250)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)

У меня Java 8
java version «1.8.0_92»
Java(TM) SE Runtime Environment (build 1.8.0_92-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.92-b14, mixed mode
Вероятно, maven использует не эту версию Java.
Он находит где-то Java 7 (или даже 6) и запускает её. Попробуйте запустить «mvn -v», она всё покажет.
Спасибо большое, я исправил JAVA_HOME на корректную версию джавы и тест запустился.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации