Spring-启动应用程序-test.properties
Spring-boot application-test.properties
我正在尝试使用 junit 对 spring-boot 应用程序进行单元测试。我已将应用程序-test.properties 放在src/test/resources 下。我有一个 ApplicationConfiguration Class 读取 application.properties.
我的测试class看起来像这样
@RunWith(SpringRunner.class)
@SpringBootTest(classes=ApplicationConfiguration.class)
@TestPropertySource(locations = "classpath:application-test.properties")
@ActiveProfiles("test")
public class TestBuilders {
@Autowired
private ApplicationConfiguration properties;
当我尝试读取属性时,它始终为空。
我的 ApplicationConfiguration Class 看起来像这样
@Configuration
@ConfigurationProperties
@PropertySources({
@PropertySource("classpath:application.properties"),
@PropertySource(value="file:config.properties", ignoreResourceNotFound =
true)})
public class ApplicationConfiguration{
private xxxxx;
private yyyyy;
我尝试了在 google 上找到的所有可能的方法。没有运气。请帮忙!
提前致谢。
问题是您的测试 @EnableConfigurationProperties
class。
当您加载应用程序时,它从您可能有 @EnableConfigurationProperties
的主 class(一个有 @SpringBootApplication
)开始,因此它在您启动应用程序时工作。
而当您是 运行 测试时,只有 ApplicationConfiguration
class 正如您在此处指定的那样
@SpringBootTest(classes=ApplicationConfiguration.class)
Spring 不知道它必须启用配置属性,因此字段没有注入,因此为空。但是 spring 正在读取您的 application-test.properties
文件。这可以通过直接在测试中注入值来确认 class
@Value("${xxxxx}")
private String xxxxx;
这里注入了值。但是要使用 ConfigurationProperties
注入 class 您需要使用 @EnableConfigurationProperties
启用它
将 @EnableConfigurationProperties
加入测试 class,一切正常。
我正在尝试使用 junit 对 spring-boot 应用程序进行单元测试。我已将应用程序-test.properties 放在src/test/resources 下。我有一个 ApplicationConfiguration Class 读取 application.properties.
我的测试class看起来像这样
@RunWith(SpringRunner.class)
@SpringBootTest(classes=ApplicationConfiguration.class)
@TestPropertySource(locations = "classpath:application-test.properties")
@ActiveProfiles("test")
public class TestBuilders {
@Autowired
private ApplicationConfiguration properties;
当我尝试读取属性时,它始终为空。
我的 ApplicationConfiguration Class 看起来像这样
@Configuration
@ConfigurationProperties
@PropertySources({
@PropertySource("classpath:application.properties"),
@PropertySource(value="file:config.properties", ignoreResourceNotFound =
true)})
public class ApplicationConfiguration{
private xxxxx;
private yyyyy;
我尝试了在 google 上找到的所有可能的方法。没有运气。请帮忙! 提前致谢。
问题是您的测试 @EnableConfigurationProperties
class。
当您加载应用程序时,它从您可能有 @EnableConfigurationProperties
的主 class(一个有 @SpringBootApplication
)开始,因此它在您启动应用程序时工作。
而当您是 运行 测试时,只有 ApplicationConfiguration
class 正如您在此处指定的那样
@SpringBootTest(classes=ApplicationConfiguration.class)
Spring 不知道它必须启用配置属性,因此字段没有注入,因此为空。但是 spring 正在读取您的 application-test.properties
文件。这可以通过直接在测试中注入值来确认 class
@Value("${xxxxx}")
private String xxxxx;
这里注入了值。但是要使用 ConfigurationProperties
注入 class 您需要使用 @EnableConfigurationProperties
将 @EnableConfigurationProperties
加入测试 class,一切正常。