捕获应用程序上下文错误spring junit

时间:2016-12-15 13:46:13

标签: java spring junit spring-boot spring-test

我正在为基于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。 基本上我需要的是应用程序上下文创建失败,但我的单元测试通过。

谢谢!

1 个答案:

答案 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() {
   //..
}