时间:2021-05-19
本文介绍了spring boot整合Cucumber(BDD)的方法,分享给大家,具体如下:
1、新建一个springboot工程工程结构如下:
2、添加pom依赖
6、在测试步骤上添加注解支持
7、测试结果
2 Scenarios (2 passed)
11 Steps (11 passed)
0m0.091s
8、整合注意点
spring boot与Cucumber整合的时候,有个地方需要注意,因为spring boot提倡去xml化,所以传统方式下,Cucumber会读取classpath下的cucumber.xml配置文件来初始化bean的方式,和spring整合后,就不能用这种方式了,需要使用@ContextConfiguration注解来实现类的加载,如果是需要加载配置文件的方式的话,可以如下使用:
如果使用注解的方式来整合的话,使用如下:
@ContextConfiguration(classes=SpringBootCucumberApplication.class)或者直接
@ContextConfiguration特别注意:@ContextConfiguration注解必加,否则会出现bean注入失败
下面,我们从源码来看下为什么会造成这种情况。
该部分涉及的代码都在cucumber-spring包下的SpringFactory类中,重点我们看下下面这个类:
public void start() {// cucumber测试启动方法 if (stepClassWithSpringContext != null) {// 如果使用了@ContextConfiguration注解的话,此处不为null testContextManager = new CucumberTestContextManager(stepClassWithSpringContext); } else {// 否则stepClassWithSpringContext就为null,会进入下面这个分支 if (beanFactory == null) { beanFactory = createFallbackContext();// 这个方法是我们要跟的重点 } } notifyContextManagerAboutTestClassStarted(); if (beanFactory == null || isNewContextCreated()) { beanFactory = testContextManager.getBeanFactory(); for (Class<?> stepClass : stepClasses) { registerStepClassBeanDefinition(beanFactory, stepClass); } } GlueCodeContext.INSTANCE.start(); }我们在来跟下createFallbackContext方法:
最后,来说下GenericApplicationContext这个类,该类会根据Bean的Type类型,然后newInstance实例,但是由于这个类中又注入了其他的类,而注入的类是无法通过new实例的方式来初始化的,所以最后就会注入失败,报空指针了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前期工作1.导入mybatis整合依赖org.mybatis.spring.bootmybatis-spring-boot-starter2.1.42.连接数据
sprig-boot是一个微服务架构,加快了spring工程快速开发,以及简便了配置。接下来开始spring-boot与mybatis的整合。1、创建一个mav
目前spring-boot成为了java开发的主流框架,cucumber作为一款支持dsl的自动化测试工具,很适合用户编写dsl优化过的单元测试等测试用例。本文
1.什么是spring-boot-devtoolsspring-boot-devtools是spring-boot项目开发时的一个热部署工具,安装了spring
一)spring-boot-starter命名规则自动配置模块命名规则:xxx-spring-boot,如:aspectlog-spring-boot启动器命名