我想测试我的Spring Boot命令行应用程序。我希望模拟某些bean(通过在测试类的顶部注释
问题是当我运行测试时,整个应用程序会正常启动(即调用
我曾试图覆盖
有什么建议吗?
编辑: Application.java
@ContextConfiguration(classes = TestConfig.class)
,我已经能够做到这一点)。 在TestConfig.class
中,我覆盖我想要模拟的bean。我希望Spring Boot
能够找到其余组件。 这似乎有效。问题是当我运行测试时,整个应用程序会正常启动(即调用
run()
方法)。@Component
public class MyRunner implements CommandLineRunner {
//fields
@Autowired
public MyRunner(Bean1 bean1, Bean2 bean2) {
// constructor code
}
@Override
public void run(String... args) throws Exception {
// run method implementation
}
我曾试图覆盖
MyRunner
的 @Bean
并将其放置在 TestConfig.class
中,但似乎没有起作用。我知道我正在加载常规应用程序上下文,但这正是我想要做的事情(我认为?),因为我想重复使用我在应用程序中创建的所有(或大多数) @Component
,并仅模拟一小部分。有什么建议吗?
编辑: Application.java
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
MyRunner
被注入并像应用程序启动时一样运行,而无论出于什么原因模拟该类都无法覆盖它。 - Tiberiu