我有一个数据项目和 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
with
@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 项目?