我正在为基于Spring boot的应用程序编写junits,而我的bean依赖于application-.properties中指定的一些配置参数。 在我正在生成bean的配置类中,
@Configuration
public class AppConfig{
@Value("${MyProperty}")
private String myProperty;
@Bean
public myBean bean1() throws MyException{
if(myProperty.contentEquals("abc"){
throw MyException("Value abc not allowed for bean1");
}
}
在我的junit中,我想要检测这种情况,如果在我的junit中我设置了配置文件并运行它错误地说'应用程序启动失败'并且没有达到我之前的方法或测试方法。
我如何处理这个问题,以便junit不会失败,我也能够检测到myexception。 基本上我需要的是应用程序上下文创建失败,但我的单元测试通过。
谢谢!
答案 0 :(得分:0)
bean取决于application-.properties
中指定的一些配置参数
这可以通过@ConditionalOnProperty
注释直接在bean定义上控制。因此,如果您的配置不存在,那么您不会在测试bean中抛出异常,而是根本没有注册它:
我正在为基于Spring boot的应用程序编写junits,而我的bean依赖于application-.properties中指定的一些配置参数。在我正在生成bean的配置类中,
@ConditionalOnProperty(name = "myProperty", havingValue = "'hiThere'")
@Bean
public myBean bean1() {
//..
}
如果要在属性上调用某些SpEL
操作,可以使用@ConditionalOnExpression
:
@ConditionalOnExpression("${myProperty}.contains('ere')")
@Bean
public myBean bean1() {
//..
}