我的目标是在使用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类:
@Component
public class BeansClass {
@Bean
public void test1() {
System.out.println("test1!");
}
}
@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 {
. . .
}