gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 11:58:19 25 4
gpt4 key购买 nike

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

谢谢!

最佳答案

beans depends on some configuration parameters specified in application-.properties

这可以直接通过 bean 定义上的 @ConditionalOnProperty 注释进行控制。因此,如果您的配置不存在,您根本不会注册它,而不是在测试 bean 中抛出异常:

我正在为基于 spring boot 的应用程序编写 junit,并且我的 bean 依赖于 application-.properties 中指定的一些配置参数。在我生成 bean 的配置类中,

@ConditionalOnProperty(name = "myProperty", havingValue = "'hiThere'")
@Bean
public myBean bean1() {
//..
}

如果您想对属性调用某些SpEL操作,您可以使用@ConditionalOnExpression:

@ConditionalOnExpression("${myProperty}.contains('ere')")
@Bean
public myBean bean1() {
//..
}

关于java - 捕获应用程序上下文错误 spring junit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41165733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com