繁体   English   中英

使用Maven进行黄瓜设置

[英]Cucumber setup using 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个不同的黄瓜罐使用相同的版本。 我可以告诉黄瓜Java的形式是1.1.5,而其他2个黄瓜罐是1.1.2。

也有尝试更新的版本。

http://mvnrepository.com/artifact/info.cukes/cucumber-java/1.2.2 (检查底部的deps部分)

检查maven pom.xml黄瓜核心黄瓜-java黄瓜junit

这些文件应具有相同的版本。 在您的示例中,cucumber-java工件ID的版本与其他版本不同。 更改

也许我错了,但是基于您的@Cucumber.Options批注,我想您要创建两个测试报告(一个为html格式,另一个为json格式)。 因此,您必须在批注中使用format代替features

@RunWith(Cucumber.class)
@Cucumber.Options(
      format = {"html:target/cucumber-html-report", "json:target/cucumber-json-report.json"}
)

希望能帮助到你

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM