在 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;
}
}
在此处输入代码我在 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;
}
}