小编典典

两个均带有@SpringBootApplication的Spring Boot项目

spring-boot

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


阅读 1182

收藏
2020-05-30

共1个答案

小编典典

您需要指定要使用的Spring Boot Main类以及@SpringBootTest

@SpringBootTest(classes = YourUiSpringBootApp.class)
2020-05-30