我有一个数据项目和UI项目.这两个项目都是Spring Boot应用程序.两个项目都具有相同的根包(com.myorg),其中主类具有注释@SpringBootApplication
.
数据项目的主要类是:
package com.myorg; @SpringBootApplication public class DataApplication { public static void main(String[] args) { SpringApplication.run(DataApplication.class, args); } }
UI项目的主要类是:
package com.myorg; @SpringBootApplication public class UiApplication { public static void main(String[] args) { SpringApplication.run(UiApplication .class, args); } }
UI项目通过以下Gradle依赖项依赖于数据项目:
dependencies { compile('com.myorg:data:1.0') }
如果我运行UI应用程序,它运行没有问题.但是,如果我在UI应用程序中运行集成测试,如下所示:
package com.myorg @RunWith(SpringRunner.class) @SpringBootTest public class UiIntTest { @Test public void contextLoads() { } }
发生以下初始化错误:
java.lang.IllegalStateException: Found multiple @SpringBootConfiguration annotated classes
在数据项目的主类中,如果我替换@SpringBootApplication
为
@Configuration @EnableAutoConfiguration @ComponentScan({ "com.myorg" })
尝试运行其集成测试时,我收到以下初始化错误:
java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test
例如,如果我尝试运行:
package com.myorg @RunWith(SpringRunner.class) @SpringBootTest public class DataIntTest { @Test public void contextLoads() { } }
如何正确配置数据和UI项目?
您需要指定要使用的Spring Boot Main类@SpringBootTest
:
@SpringBootTest(classes = YourUiSpringBootApp.class)