Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未注射黄瓜的春季依赖者_Java_Spring_Cucumber Jvm - Fatal编程技术网

Java 未注射黄瓜的春季依赖者

Java 未注射黄瓜的春季依赖者,java,spring,cucumber-jvm,Java,Spring,Cucumber Jvm,问题: 我正在使用JVM和Spring进行集成测试。未创建测试步骤类中的自动连线类,该类为空 测试在本地工作,但在构建服务器上失败,当尝试对自动连线bean进行方法调用时,使用空指针 堆栈 Java 1.8(本地和构建服务器) Maven 3.3.9(本地和构建服务器) 本地:Windows8,构建服务器:Ubuntu(无法理解这有什么不同) 我尝试的 问题类被注释为@Component,我尝试删除@Component注释并在spring上下文中注册它-这没有效果 将Spring日志级别设

问题: 我正在使用JVM和Spring进行集成测试。未创建测试步骤类中的自动连线类,该类为空

测试在本地工作,但在构建服务器上失败,当尝试对自动连线bean进行方法调用时,使用空指针

堆栈

  • Java 1.8(本地和构建服务器)
  • Maven 3.3.9(本地和构建服务器)
  • 本地:Windows8,构建服务器:Ubuntu(无法理解这有什么不同)
我尝试的

问题类被注释为@Component,我尝试删除@Component注释并在spring上下文中注册它-这没有效果

将Spring日志级别设置为DEBUG几乎没有什么值得关注的。对于使用Cucumber runner(@RunWith(Cucumber.class))的测试,我从Spring中看到的日志相对较少。与使用SpringRunner的无关测试相比,几乎没有

我编写了一个测试,使用SpringJunit4Runner而不是Cucumber runner,并自动连接问题类,它运行良好;该类不是空的

代码

聚甲醛


我讨厌回答自己的问题,但我已经找到了解决办法

  • 将cucumber(所有cucumber info.cukes依赖项)升级到1.2.4
  • @ContextConfiguration(“classpath:*Cucumber.xml”)
    添加到我的所有步骤定义类中

  • 升级后,我看到了Cucumber runner运行的测试在调试级别的Spring日志记录的预期数量。

    升级到Cucumber 1.2.4(所有Cucumber info.cukes依赖项)后,它可以工作。仍然无法解释为什么1.2.2在windows而不是构建服务器上运行良好。此外,在升级之后,我看到了在调试级别上使用Cucumber runner运行测试的Spring日志记录的预期数量。忘了提及:我需要将@ContextConfiguration(“classpath:*cucucumber.xml”)添加到我的所有Step def类中,以便它在升级之后工作。
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>com.foo</groupId>
            <artifactId>matching-engine</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </parent>
        <artifactId>core</artifactId>
        <name>core</name>
        <description>core matching engine</description>
    
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.3</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
            </plugins>
        </build>
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>4.1.6.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>4.1.6.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>4.1.6.RELEASE</version>
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>4.1.6.RELEASE</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>1.1.3</version>
            </dependency>
            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-core</artifactId>
                <version>1.10.19</version>
            </dependency>
            <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
                <version>1.4.186</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>info.cukes</groupId>
                <artifactId>cucumber-java8</artifactId>
                <version>1.2.2</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>info.cukes</groupId>
                <artifactId>cucumber-spring</artifactId>
                <version>1.2.2</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>info.cukes</groupId>
                <artifactId>cucumber-junit</artifactId>
                <version>1.2.2</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>jcl-over-slf4j</artifactId>
                <version>1.7.13</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>1.7.13 </version>
            </dependency>
        </dependencies>
    
    </project>
    
    <?xml version="1.0" encoding="UTF-8"?>
    
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.1.xsd">
    
        <context:component-scan base-package="com.foo.matching" />
        <context:annotation-config/>
        <import resource="matching-engine-spring-context-TEST.xml" />
    
    </beans>
    
    <?xml version="1.0" encoding="UTF-8"?>
    
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.1.xsd">
     <!-- Added this when I removed @Component from its class definition -->
        <bean id="testHelper" class="com.foo.matching.test.common.TestHelper"/>
        <bean id="orderTimeArrivalService" class="com.foo.matching.orderbook.MockOrderArrivalTimeService"/>
        <bean id="tradeExecutionService" class="com.foo.matching.execution.MockTradeExecutionService"/>
        <bean id="orderBookService" class="com.foo.matching.orderbook.TestOrderBookService"/>
    
    </beans>
    
    import org.junit.runner.RunWith;
    
    import cucumber.api.CucumberOptions;
    import cucumber.api.junit.Cucumber;
    
    @RunWith(Cucumber.class)
    @CucumberOptions(plugin = {"pretty", "html:target/cucumber"})
    public class MarketOrderTest {
    
    }
    
    public class MarketOrderSteps {
    
        @Autowired
        private TestHelper testHelper;
    
        @Given("^The order book looks like this before the trade is placed:$")
        public void setupOrderBook(List<LimitOrder> orders) {
            System.out.println("TestHelper: " + testHelper);
            testHelper.setupOrderBook(orders);
        }
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:*Cucumber.xml")
    public class SpringTest{
    
        @Autowired
        private TestHelper testHelper;
    
        @Test
        public void test() {
            assertNotNull(testHelper);
        }