Eug*_*e S 5 java junit spring automation cucumber
我的目标是运行 Cucumber 场景,同时使用 Spring 进行对象创建和连接。据我了解(来自一些 Cucumber 书籍),只要路径配置正确,Cucumber 运行程序就应该负责加载应用程序上下文。
例如,如果我有一个如下所示的运行器 Java 类:
@RunWith(Cucumber.class)
@CucumberOptions(features = {"classpath:xxx_features"},
glue = {"com.package.name"})
public class FunctionalDevIT {
}
Run Code Online (Sandbox Code Playgroud)
然后 Cucumber runner 将自动扫描并初始化它找到的所有 bean,这样我就不必手动加载应用程序上下文以及从上下文中一一获取 bean。
目前,为了理解这个概念,我创建了最基本的配置,其中包含三个 Java 类:
Beans 类 - 包含 Bean 的类
@Component
public class BeansClass {
@Bean
public void test1() {
System.out.println("test1!");
}
}
Run Code Online (Sandbox Code Playgroud)主类 - 使用 Beans 类中定义的 beans 的类
@ContextConfiguration("classpath:/cucumber.xml")
public class MainClass {
@Autowired
private BeansClass testclass;
@Before
public void navigate() {
testclass.test1();
}
}
Run Code Online (Sandbox Code Playgroud)目前,这种方法对我来说不起作用,NullPointerException当我尝试调用testclass.test1()主类中的方法时,我得到了,这意味着上下文毕竟没有加载。
我是否缺少一些配置,或者我对它应该如何工作的整个理解是错误的?
PS我的所有文件目前都在同一个包中。
Eug*_*e S -2
我通过添加已用 和 注释的附加配置类解决了这个问题@ComponentScan,@Configuration如下所示:
@ComponentScan
@Configuration
public class ConfigurationClass {
. . .
}
Run Code Online (Sandbox Code Playgroud)
ConfigurationClass然后我在主类中使用了这个类:
@ContextConfiguration(classes = WebDriverConfiguration.class)
public class MainClass {
. . .
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6569 次 |
| 最近记录: |