首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的Pom文件在添加Cucumber:'cucumber-spring‘和'cucumber-guice’时不起作用?

为什么我的Pom文件在添加Cucumber:'cucumber-spring‘和'cucumber-guice’时不起作用?
EN

Stack Overflow用户
提问于 2017-04-07 00:29:20
回答 2查看 253关注 0票数 0

为什么我的Pom文件在添加Cucumber:'cucumber-spring‘和'cucumber-guice’时不起作用?

我的Cucumber项目设置使用以下依赖项:

代码语言:javascript
复制
<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <fork>true</fork>
                    <!--<executable>C:\Program Files\Java\jdk1.8.0_121\bin\javac.exe</executable> -->
                    <executable>${env.JAVA_HOME}\bin\javac.exe</executable>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <configuration>
                    <mainClass>Framework.utilities.SendEmailFile</mainClass>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19.1</version>
                <!-- <configuration> <suiteXmlFiles> <suiteXmlFile>ncc.xml</suiteXmlFile> 
                    </suiteXmlFiles> <testErrorIgnore>false</testErrorIgnore> <testFailureIgnore>false</testFailureIgnore> 
                    </configuration> -->
            </plugin>
        </plugins>
    </pluginManagement>
</build>

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>1.2.5</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-jvm</artifactId>
        <version>1.2.5</version>
        <type>pom</type>
    </dependency>
    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-junit</artifactId>
        <version>1.2.5</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-core</artifactId>
        <version>1.2.5</version>
    </dependency>

    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-html</artifactId>
        <version>0.2.3</version>
    </dependency>

    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>1.2.5</version>
    </dependency>

    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-jvm-deps</artifactId>
        <version>1.0.5</version>
    </dependency>

    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>gherkin</artifactId>
        <version>2.12.2</version>
    </dependency>

    <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-all</artifactId>
        <version>1.3</version>
    </dependency>

    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-picocontainer</artifactId>
        <version>1.2.5</version>
    </dependency>

    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-testng</artifactId>
        <version>1.2.5</version>
    </dependency>
</dependencies>

添加以下依赖项会使我的项目停止工作:

代码语言:javascript
复制
    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-spring</artifactId>
        <version>1.2.5</version>
    </dependency>

    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-guice</artifactId>
        <version>1.2.5</version>
    </dependency>

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2017-04-07 02:17:29

这是依赖版本问题,您应该尝试cucumber-spring的较低版本。使用1.2.4版本或更低版本...并更新maven项目。

代码语言:javascript
复制
<dependency>
    <groupId>info.cukes</groupId>
    <artifactId>cucumber-spring</artifactId>
    <version>1.2.4</version>
</dependency>

<dependency>
    <groupId>info.cukes</groupId>
    <artifactId>cucumber-guice</artifactId>
    <version>1.2.4</version>
</dependency>
票数 1
EN

Stack Overflow用户

发布于 2018-10-31 04:02:08

Cucumber为DI框架提供了一种称为cucumber.api.java.ObjectFactory的扩展机制。

如果您查看关联的加载器方法cucumber.runtime.java.ObjectFactoryLoader#loadObjectFactory的代码,您将看到它调用了cucumber.runtime.Reflections#instantiateExactlyOneSubclass,这将抛出TooManyInstancesExceptionNoInstancesException

很明显,它需要零个或一个公共类来实现 ObjectFactory并位于包cucumber.runtime中。

  • 默认设置为cucumber.runtime.java.DefaultJavaObjectFactory,只有在抛出NoInstancesException时才会加载(扫描时找不到,因为它是protected)
  • cucumber-spring附带的cucumber.runtime.java.spring.SpringFactory
  • etc.

在您的例子中,您必须在可用实例(none/default、Picocontainer、Spring、Guice)中选择一个来实例化stepdefs类。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43260842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档