Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何整合Spring Boot、Cucumber和Mockito?_Java_Spring Boot_Cucumber_Mockito_Spring Boot Test - Fatal编程技术网

Java 如何整合Spring Boot、Cucumber和Mockito?

Java 如何整合Spring Boot、Cucumber和Mockito?,java,spring-boot,cucumber,mockito,spring-boot-test,Java,Spring Boot,Cucumber,Mockito,Spring Boot Test,有很多在线方法可以将Cucumber与Spring Boot集成在一起。但我也找不到如何处理Mockito。如果我使用Cucumber runner并使用ContextConfiguration和SpringBootTest对steps文件进行注释,那么容器将注入自动连接的依赖项及其所有特性。问题是用Mock、MockBean和injectmock注释的依赖项不起作用。有人知道它为什么不起作用以及如何使它起作用吗 编辑:可以使用mock(bean.class)实例化bean,而不是使用mock注

有很多在线方法可以将Cucumber与Spring Boot集成在一起。但我也找不到如何处理Mockito。如果我使用Cucumber runner并使用ContextConfiguration和SpringBootTest对steps文件进行注释,那么容器将注入自动连接的依赖项及其所有特性。问题是用Mock、MockBean和injectmock注释的依赖项不起作用。有人知道它为什么不起作用以及如何使它起作用吗

编辑:可以使用mock(bean.class)实例化bean,而不是使用mock注释。但是像MockBean和InjectMock这样的特性呢

跑步者

@RunWith(Cucumber.class)
@CucumberOptions(plugin = {"pretty", "html:build/cucumber_report/"},
                 features = "classpath:cucumber/",
                 glue = {"com.whatever"},
                 monochrome = true,
                 dryRun = false)
public class CucumberTest {

}
台阶

跑步者:

@CucumberOptions(plugin = {"pretty"}, 
                 glue = {"com.cucumber.test"},
                 features = "x/y/resources")
public class CucumberTest { 

}
在这里,我们将使用@SpringBootTest、@RunWith(SpringRunner.class)创建一个类,以开始将bean加载到spring上下文中。现在我们要模仿春天的豆子,不管我们想在这里做什么

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringTest {

@MockBean    
private Mockedbean mockedbean;
}
现在,我们需要将SpringBootTest注释的testclass扩展到CucumberSteps类,然后在这里自动连接模拟bean,将获得模拟bean(Mockedbean)的实例。我们还可以进行autowire并获取其他SpringBootBean的实例(TestBean)


}

Yes@DirkDeyne,可以手动执行“mock(Bean.class)”而不是mock注释。但是我怎样才能使用MockBean和InjectMocks这样的功能呢?嗨,我也有同样的问题,但这对我不起作用。我使用多步骤定义,因为cucumber现在只允许一个应用程序上下文配置,所以我只能使用SpringBoot测试扩展或标记一个类来构建应用程序上下文。因此,在我的例子中,Mockito只在扩展或具有SpringBootTest注释的类中工作,当执行另一个步骤时,我得到的不是模拟异常,例如,当我尝试进行验证时。它对我非常有效,谢谢!PS:feature=“x/y/resources”(而不是“java”)和我的基础应用程序包在glue上。。(不是通用的com.cumber.test)。这个在父对象上声明的自动连线CocuberFeatureTest和@MockBean实现了这个技巧
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringTest {

@MockBean    
private Mockedbean mockedbean;
}
public class CucumberSteps extends SpringTest {

@Autowired
private Mockedbean mockedbean;

@Autowired
private TestBean testBean;