【发布时间】:2015-06-16 00:33:48
【问题描述】:
我在一个小 PoC 中使用 Spring Boot,并且我正在尝试测试一个 @Bean 实现。我有这个代码:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
CommandLineRunner init(@Value("${db.resetAndLoadOnStartup:true}") boolean resetAndLoadOnStartup,
SequenceIdRepository sequenceRepository,
UserAccountRepository userAccountRepository,
BookRepository bookRepository) {
return args -> {
log.info("Init Application...");
if (resetAndLoadOnStartup) {
fillDBData(sequenceRepository, userAccountRepository, bookRepository);
}
log.info("Aplication initiated!");
};
}
private void fillDBData(SequenceIdRepository sequenceRepository,
UserAccountRepository userAccountRepository,
BookRepository bookRepository) {
// Some code...
}
...
}
如何对这个@Bean commandLineRunner 进行单元测试?是的,也许我可以对“fillDBData”方法进行单元测试(设置受保护或使用 powermock),但我想了解是否有办法“完全”测试 Spring @Bean。
【问题讨论】:
-
我认为您将不得不在这里进行集成测试。
-
是的,我猜到了,但我不知道如何在测试中“调用”bean:S
标签: java spring unit-testing spring-boot spring-test