Настройка огурца с использованием Maven
Я новичок в Java и плохо знаком с огурцом. Я пытался настроить фреймворк для тестирования огурцов, используя maven, но получал исключение при выполнении тестов на огурец.
В моем pom.xml зависимости установлены как:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>1.1.5</version>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>1.1.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-picocontainer</artifactId>
<version>1.1.2</version>
</dependency>
</dependencies>
Файл объекта имеет следующие записи:
package cucumber.demo;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
public class Steps {
@Given("^This is my first dummy step$")
public void This_is_my_first_dummy_step() throws Throwable {
System.out.println("Excuted the first given step.");
}
@When("^This is my second dummy step$")
public void This_is_my_second_dummy_step() throws Throwable {
System.out.println("Exceuted 2nd step.");
}
@Then("^This is my third dummy step$")
public void This_is_my_third_dummy_step() throws Throwable {
System.out.println("Excuted the third step.");
}
}
Мой RunnerTest.java имеет следующий код:
package cucumber.demo;
import org.junit.runner.RunWith;
import cucumber.api.junit.Cucumber;
@RunWith(Cucumber.class)
@Cucumber.Options(
features= {"html:target/cucumber-html-report", "json:target/cucumber-json-report.json"}
)
public class RunnerTest {
}
Когда я запускаю приложение, я получаю следующее сообщение об ошибке:
Test set: cucumber.demo.RunnerTest
-------------------------------------------------------------------------------
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.039 sec <<< FAILURE!
initializationError(cucumber.demo.RunnerTest) Time elapsed: 0.005 sec <<< ERROR!
java.lang.NoSuchMethodError: cucumber.runtime.RuntimeOptions.<init>(Ljava/util/Properties;[Ljava/lang/String;)V
at cucumber.runtime.junit.RuntimeOptionsFactory.create(RuntimeOptionsFactory.java:32)
at cucumber.api.junit.Cucumber.<init>(Cucumber.java:56)
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:526)
at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:29)
at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:21)
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:26)
at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:51)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104)
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:606)
at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)
at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110)
at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175)
at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68)
Любая идея, почему я получаю это сообщение. Дайте мне знать, что нужно больше деталей. Спасибо анирбан
3 ответа
Проверьте maven pom.xml огуречный ядро огурец-ява огурец-джунит
Эти файлы должны иметь одинаковую версию. В вашем примере идентификатор артефакта cucumber-java имеет другую версию, чем остальные. Измени это
Насколько я знаю, вы должны использовать одну и ту же версию для 3 разных банок огурца *. Из того, что я могу сказать, cucumber-java - 1.1.5, а jar для огурцов - 1.1.2 для остальных 2.
Также есть более новые версии, чтобы попробовать.
http://mvnrepository.com/artifact/info.cukes/cucumber-java/1.2.2 (проверьте часть deps внизу)
Может я не прав но по твоему @Cucumber.Options
аннотации, я предлагаю вам создать два отчета об испытаниях (один в html
форматировать и прочее в json
формат). Итак, вы должны использовать format
вместо features
в аннотации:
@RunWith(Cucumber.class)
@Cucumber.Options(
format = {"html:target/cucumber-html-report", "json:target/cucumber-json-report.json"}
)
Надеюсь, поможет