首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpringCloud 2020.0.2升级生成测试错误

SpringCloud 2020.0.2升级生成测试错误
EN

Stack Overflow用户
提问于 2021-03-26 16:10:54
回答 4查看 12K关注 0票数 11

我正在尝试将项目从SpringCloud BOM 2020.0.1升级到2020.0.2

当我更改物料清单并重新构建时,我在JUnit测试中得到一个错误,指出没有为配置服务器设置新参数spring.config.import

此项目不是ConfigServer,也不使用ConfigServer (注释配置客户端)

这是测试contextLoads()中报告的错误

代码语言:javascript
复制
java.lang.IllegalStateException: Failed to load ApplicationContext
    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:132)
    at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:124)
    at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:118)
    .. Many more
Caused by: org.springframework.cloud.config.client.ConfigServerConfigDataMissingEnvironmentPostProcessor$ImportException: No spring.config.import set
    at org.springframework.cloud.config.client.ConfigServerConfigDataMissingEnvironmentPostProcessor.postProcessEnvironment(ConfigServerConfigDataMissingEnvironmentPostProcessor.java:60)
    at org.springframework.boot.env.EnvironmentPostProcessorApplicationListener.onApplicationEnvironmentPreparedEvent(EnvironmentPostProcessorApplicationListener.java:100)
    at org.springframework.boot.env.EnvironmentPostProcessorApplicationListener.onApplicationEvent(EnvironmentPostProcessorApplicationListener.java:86)
    ... Many more

这是我的build.gradle

代码语言:javascript
复制
plugins {
    id 'org.springframework.boot' version '2.4.2'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'com.example.microservices.composite.product'
version = '1.0.0-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
    mavenCentral()
    maven {
        url 'https://repo.spring.io/milestone'
    }
}

ext {
   // resilience4jVersion = "1.7.0"
   resilience4jVersion = "1.6.1"

}

dependencies {
    // Local projects dependencies
    implementation project(':api')
    implementation project(':util') 

    // Implementations dependencies
    // Standard (actuator - for monitoring and Health)  
    implementation 'org.springframework.boot:spring-boot-starter-actuator'
    // WebFlux (asynchronous Web)
    implementation 'org.springframework.boot:spring-boot-starter-webflux'

    // SpringFox dependencies
    implementation "io.springfox:springfox-boot-starter:3+"
    implementation('io.springfox:springfox-spring-webflux:3+')

    // Implementation: Spring cloud
    implementation('org.springframework.cloud:spring-cloud-starter-config')
    implementation('org.springframework.cloud:spring-cloud-starter-stream-rabbit')
    implementation('org.springframework.cloud:spring-cloud-starter-stream-kafka')

    // Security
    implementation('org.springframework.boot:spring-boot-starter-security')
    implementation('org.springframework.security:spring-security-oauth2-resource-server')
    implementation('org.springframework.security:spring-security-oauth2-jose')

    // CircuitBreaker with Resilience4J
    implementation("io.github.resilience4j:resilience4j-spring-boot2:${resilience4jVersion}")
    implementation("io.github.resilience4j:resilience4j-reactor:${resilience4jVersion}")
  
    // Implementation: Tracing
    implementation('org.springframework.cloud:spring-cloud-starter-sleuth') 

    // Implementation: Performance metrics
    implementation("io.micrometer:micrometer-registry-prometheus")
    
    // TEST dependencies
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    }
    testImplementation 'io.projectreactor:reactor-test'
    testImplementation('org.springframework.cloud:spring-cloud-stream-test-support')

}


dependencyManagement {
    imports {
        // mavenBom 'org.springframework.cloud:spring-cloud-dependencies:2020.0.1'
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:2020.0.2"
    }
}

test {
    useJUnitPlatform()
}

而且我在测试类中的contextLoads()方法很简单

代码语言:javascript
复制
// Test: Application
@AutoConfigureWebTestClient
@SpringBootTest(
    webEnvironment = WebEnvironment.RANDOM_PORT, 
    classes = { 
        ProductCompositeServiceApplication.class,
        TestSecurityConfig.class }, 
    properties = { 
        "spring.main.allow-bean-definition-overriding=true" })

    @Test
    public void contextLoads() {
    }
}

注意:我还尝试在类中将`spring.config.import的属性定义为empty或none,但未做任何更改

代码语言:javascript
复制
@SpringBootTest(
    webEnvironment = WebEnvironment.RANDOM_PORT, 
    classes = { 
        ProductCompositeServiceApplication.class,
        TestSecurityConfig.class }, 
    properties = { 
        "spring.main.allow-bean-definition-overriding=true",
        "spring.config.import=" })
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-03-29 16:42:32

在升级到SpringCloud 2020.0.2之后,我注意到了同样的问题

在测试中添加spring.cloud.config.enabled=false解决了这个问题。

例如:

代码语言:javascript
复制
@SpringBootTest(
  webEnvironment = RANDOM_PORT, 
  properties = {"spring.cloud.config.enabled=false"}
)
票数 9
EN

Stack Overflow用户

发布于 2021-04-27 18:44:22

我也遇到过同样的问题,通过添加bootstrap lib和config lib解决了这个问题,如下所示。

代码语言:javascript
复制
implementation 'org.springframework.cloud:spring-cloud-starter-config'
implementation 'org.springframework.cloud:spring-cloud-starter-bootstrap'
票数 19
EN

Stack Overflow用户

发布于 2021-11-23 14:29:44

我解决了这个问题。添加依赖项

代码语言:javascript
复制
<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66813147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档