在单独的gradle子项目中测试弹簧类

时间:2017-01-09 09:28:00

标签: spring unit-testing testing spring-boot

我的项目分为几个gradle子项目(模块)。我有一个包含几个弹簧组件/ bean的模块。我想使用junit,mockito和springboottest测试这些bean,其功能包括autowired和mockbean。我正在使用

@RunWith(SpringJUnit4ClassRunner::class)
@SpringBootTest

注释,但是当我尝试运行测试时,我得到了

java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test

这是因为此模块中没有主类(@SpringBootApplication)。

可以通过创建像

这样的模拟主类来避免这种情况
@SpringBootApplication
class TestApp {
}

有没有办法让它在没有创建模拟主类的情况下工作?

1 个答案:

答案 0 :(得分:0)

如果要在子模块中运行test,则需要定义一些配置类。它可以@Configuration @ComponentScan位于src/test/java子模块的根包中,这样就不会污染您的生产代码。

使用此类测试配置,只需使用@SpringBootTest(classes=YourTestConfiguration.class)

也许你想看一下自Spring Boot 1.4.x以来的新注释@TestConfiguration。那个是专门针对测试配置而定制的。