我的目标是在使用Spring进行对象创建和接线时运行Cucumber方案。据我了解(从一些Cucumber书籍中),只要路径配置正确,Cucumber运行程序就应负责加载应用程序上下文。

例如,如果我有一个类似的Runner Java类:

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

public class FunctionalDevIT {
}

然后CucumberRunner将自动进行扫描并初始化它将找到的所有bean,因此不必手动加载应用程序上下文以及从上下文中逐个获取bean。

当前,只是为了了解这个概念,我创建了一个最基本的配置,该配置包含三个Java类:
  • Runner类(如上所述)
  • Beans类-包含bean的类
    @Component
    public class BeansClass {
    
        @Bean
        public void test1() {
            System.out.println("test1!");
        }
    }
    
  • 主类-使用Beans类中定义的Bean的类
    @ContextConfiguration("classpath:/cucumber.xml")
    public class MainClass {
    
        @Autowired
        private BeansClass testclass;
    
        @Before
        public void navigate() {
            testclass.test1();
        }
    }
    

  • 目前,这种方法对我不起作用,当我尝试在Main Class中调用NullPointerException方法时,我得到了testclass.test1(),这意味着该上下文毕竟没有加载。

    我是否缺少某些配置,或者我对应该如何工作的整体理解是错误的?

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

    最佳答案

    我通过添加和附加已用@ComponentScan@Configuration注释的配置类解决了此问题,如下所示:

    @ComponentScan
    @Configuration
    public class ConfigurationClass {
        . . .
    }
    

    然后我在主类的ConfigurationClass中使用了该类:
    @ContextConfiguration(classes = WebDriverConfiguration.class)
    public class MainClass {
        . . .
    }
    

    10-05 22:56
    查看更多