我创建了一个 Spring Boot 项目,在其中定义了一些条件 bean,它们使用 ConditionalOnProperty 注释。因此,根据我的属性文件设置,将创建一些bean,而另一些则不会(因为我有一些后端用于一件事,所以可以在属性文件中设置以在生产情况下选择一个)。
但是我为所有 bean 编写了单元测试,因此单元测试不会成功,因为在某些情况下,某些 bean 根本不会创建,并且我将得到 UnsatisfiedDependencyException。
有什么方法可以让我只能测试创建的bean,我尝试在单元测试方法上添加ConditionalOnProperty注释,但它不起作用,因为它是关于bean注册的。
如果没有什么好的解决方案,我会将项目拆分为每个后端的一些库,但这只是一个小项目。
最佳答案
好吧,终于找到方法了。
在我的测试用例中,我使用 Autowired 注释,首先,我应该添加
required = false
Autowired 的参数,所以当
由于不满足 ConditionOnProperty,所以未创建 bean,不会抛出 NoSuchBeanException,并且该字段保持 null。
其次,我应该使用JUnit的Assume类来检查条件是否满足,如果不满足条件,则忽略大小写。
因为我的条件是属性文件中的值,所以我读取它并使用它来提供 ShouldTrue 方法。
也许还有另一种更好的方法,但它对我有用。
关于java - 使用spring条件bean时如何指定单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50315579/