gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 03:56:36 24 4
gpt4 key购买 nike

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

例如,如果我有一个如下所示的运行器 Java 类:

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

public class FunctionalDevIT {
}

然后 Cucumber runner 将自动扫描并初始化它会找到的所有 bean,这样我就不会必须手动加载应用程序上下文并获取 bean 一个一个从上下文。

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

  1. 运行者类(如上所述)
  2. Beans 类 - 包含 bean 的类

    @Component
    public class BeansClass {

    @Bean
    public void test1() {
    System.out.println("test1!");
    }
    }
  3. 主类 - 使用 Beans 类中定义的 bean 的类

    @ContextConfiguration("classpath:/cucumber.xml")
    public class MainClass {

    @Autowired
    private BeansClass testclass;

    @Before
    public void navigate() {
    testclass.test1();
    }
    }

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

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

附言我所有的文件目前都在同一个包中。

最佳答案

我通过添加和附加的配置类解决了这个问题,这些配置类已用 @ComponentScan@Configuration 注释,所以是这样的:

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

然后我在主类的ConfigurationClass中使用了这个类:

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

关于java - 如何使用 Cucumber runner 加载 Spring 应用程序上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33066575/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com