我有一个spring boot命令行应用程序:
@SpringBootApplication
public class TheApplication implements CommandLineRunner {
public void run(String... args) throws Exception {
...
}
}
,我想测试@Service
使用的TheApplication
。通常,如果这是一个TheApplication
没有任何功能的mvc应用程序,则很好,在这种情况下,它是CommandLineRunner
,并且每次我想测试@Service
,run
被称为,导致测试出现问题。我需要对测试进行注释,因为@Service
使用@Value
进行自我配置,但是这些注释会导致应用程序启动并调用run
方法。
是否可以运行弹簧启动测试?
@RunWith(SpringRunner.class)
@SpringBootTest
public class AccessTokenTest {
...
}
是否调用了TheApplication::run
?
答案 0 :(得分:2)
根据此answer证明,这相当容易。
@Configuration
@ComponentScan(excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = CommandLineRunner.class))
@EnableAutoConfiguration
public class TestApplicationConfiguration {
}
@RunWith(SpringRunner.class)
@SpringBootTest(classes = TestApplicationConfiguration.class)
public class TheTest {
@Autowired
TheService theService;
...
}