我的项目分为几个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 {
}
有没有办法让它在没有创建模拟主类的情况下工作?
答案 0 :(得分:0)
如果要在子模块中运行test,则需要定义一些配置类。它可以@Configuration
@ComponentScan
位于src/test/java
子模块的根包中,这样就不会污染您的生产代码。
使用此类测试配置,只需使用@SpringBootTest(classes=YourTestConfiguration.class)
。
也许你想看一下自Spring Boot 1.4.x以来的新注释@TestConfiguration
。那个是专门针对测试配置而定制的。