在 Junit 中获取自动装配的 @ConfigurationProperties bean

Get @ConfigurationProperties bean autowired in Junit

在此处输入代码我在 spring 引导中有一个用 @ConfigurationProperties 注释的 class,我怎样才能让这个 bean 在 Junit 测试中自动装配

@ConfigurationProperties
 public class ConfigClass{
   public String property;
}

--正在测试中--

@RunWith(MockitoJunitRuner.class)
 class MyTests{

 @Autowired
 private ConfigClass configClass;

 @Test
 public myTest1(){
   String prop = configClass.getProperty();
   //Some assert
 }

-- 当我 运行 这个测试时 configClass 输出为 null --

使用 jUnit 测试 springboot 你可以使用 @RunWith(SpringRunner.class) 或 @SpringbootTest 加载整个上下文

如果您想专门测试您的配置,请使用@TestConfiguration 注释。有两种方法可以在同一个测试 class 中的静态内部 class 上使用注解 Either ,我们希望在其中 @Autowire bean 或创建单独的测试配置 class:

我会选择static中的第一个选项class

见下面的例子,

@ConfigurationProperties
 public class ConfigClass{
   public String property;
}
--Now under Test--

@RunWith(MockitoJunitRuner.class)
 class MyTests{


 @Autowired
 private ConfigClass configClass;

**// here use the @TestConfiguration annotation not @Test**

 @TestConfiguration
 public myTest1(){
   String prop = configClass.getProperty();
   //Some assert
 }

//好的,现在有另一个 class 就像下面是测试的一部分,并且 configClass 没有在那里自动装配,任何想法

注意:我建议使用具有 单独测试配置 class 的第二个选项来自动连接 class 中的所有配置,如下所示

@TestConfiguration
public YourTestConfigurationClass ()
{
// plus all the other code which worked 

    @Component
    public class OtherClass{
 
      @Autowired
      private ConfigClass configClass;
   }
}