Java 如何使用Cucumber runner加载Spring应用程序上下文

Java 如何使用Cucumber runner加载Spring应用程序上下文,java,spring,junit,automation,cucumber,Java,Spring,Junit,Automation,Cucumber,我的目标是运行Cumber场景,同时使用Spring创建和连接对象。据我所知(从一些Cucumber书籍中),Cucumber runner应该负责加载应用程序上下文,只要路径配置正确 例如,如果我的runner Java类如下所示: @RunWith(Cucumber.class) @CucumberOptions(features = {"classpath:xxx_features"}, glue = {"com.package.name"}) pub

我的目标是运行Cumber场景,同时使用Spring创建和连接对象。据我所知(从一些Cucumber书籍中),Cucumber runner应该负责加载应用程序上下文,只要路径配置正确

例如,如果我的runner Java类如下所示:

@RunWith(Cucumber.class)
@CucumberOptions(features = {"classpath:xxx_features"}, 
                 glue = {"com.package.name"})

public class FunctionalDevIT {
}
@ComponentScan
@Configuration
public class ConfigurationClass {
    . . . 
}
然后Cucumber runner将自动扫描并初始化它将找到的所有bean,这样我就不必手动加载应用程序上下文,也不必从上下文中逐个获取bean

目前,为了了解这个概念,我创建了一个最基本的配置,它由三个Java类组成:

  • 流道等级(如上所述)
  • Beans类-包含bean的类

    @Component
    public class BeansClass {
    
        @Bean
        public void test1() {
            System.out.println("test1!");
        }
    }
    
  • Main类-使用bean类中定义的bean的类

    @ContextConfiguration("classpath:/cucumber.xml")
    public class MainClass {
    
        @Autowired
        private BeansClass testclass;
    
        @Before
        public void navigate() {
            testclass.test1();
        }
    }
    
  • 目前,这种方法对我不起作用,当我尝试调用主类中的
    testclass.test1()
    方法时,我得到了
    NullPointerException
    ,这意味着上下文根本没有加载

    我是否遗漏了一些配置,或者我对它应该如何工作的全部理解是错误的


    p.S.我的所有文件当前都在同一个包中。

    我通过添加附加的配置类解决了这个问题,该类已用
    @ComponentScan
    @configuration
    注释,如下所示:

    @RunWith(Cucumber.class)
    @CucumberOptions(features = {"classpath:xxx_features"}, 
                     glue = {"com.package.name"})
    
    public class FunctionalDevIT {
    }
    
    @ComponentScan
    @Configuration
    public class ConfigurationClass {
        . . . 
    }
    
    然后我在主类的
    ConfigurationClass
    中使用了这个类:

    @ContextConfiguration(classes = WebDriverConfiguration.class)
    public class MainClass {
        . . .
    }