问题描述
我正在尝试运行带有测试值的单元测试 application.yaml 文件,但我的 @Value 变量中仍然收到 null 值。
@RunWith(springrunner.class)
@SpringBoottest
@ContextConfiguration(classes = { SpringBatchConfiguration.class })
public class WebServiceReaderTest {
//some mock services here
@InjectMocks
private CustomWebServiceReader reader;
private JobParameters jobParameters;
@Test
public void readertest() throws Exception {
StepExecution stepExecution = MetaDataInstanceFactory
.createStepExecution(jobParameters);
StepScopeTestUtils.doInStepScope(stepExecution,() -> reader.read());
}
}
SpringBatchConfiguration.class
@Configuration
@EnableAutoConfiguration
@EnableBatchProcessing
public class SpringBatchConfiguration extends DefaultBatchConfigurer {
@Override
public void setDataSource(DataSource dataSource) {
// leave empty,so the spring batch will not use database,but a Map
}
}
@Value("${data-import.threshold}")
private Long threshold;
我在 src/test/resources 文件夹中有我的 application.yaml 文件
data-import:
threshold: 10
我使用的是 Spring Boot 2.4.4 和 wiremock 2.27.2。
我试过使用
@ContextConfiguration(classes = { SpringBatchConfiguration.class },initializers=
ConfigDataApplicationContextinitializer.class)
@ContextConfiguration(classes = { SpringBatchConfiguration.class },initializers=
ConfigFileApplicationContextinitializer.class)
@TestPropertySource(locations = { "classpath:application.yaml" })
但这些都没有用。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)