You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot WebFlux GraphQL测试遇UnsatisfiedDependencyException求助

解决Spring GraphQL测试中GraphQlTester无法注入的问题

问题概述

测试类中通过@Autowired注入GraphQlTester时,Spring容器找不到对应类型的bean,抛出异常:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'com.cg.bms.QueryTests': Unsatisfied dependency expressed through field 'graphQlTester': No qualifying bean of type 'org.springframework.graphql.test.tester.GraphQlTester' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

排查与解决步骤

1. 确认测试依赖是否正确引入

GraphQlTester的自动配置依赖spring-boot-starter-graphql-test包,必须确保该依赖已添加到测试环境:

  • Maven(pom.xml):
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-graphql-test</artifactId>
        <scope>test</scope>
    </dependency>
    
  • Gradle(build.gradle):
    testImplementation 'org.springframework.boot:spring-boot-starter-graphql-test'
    

2. 检查@GraphQlTest注解的使用

  • 确保@GraphQlTest(PostGraphQLController.class)中的PostGraphQLController是有效的GraphQL控制器:该类需标注@Controller,且内部的查询/突变方法已用@QueryMapping或@MutationMapping注解标记。
  • @GraphQlTest仅会加载与GraphQL相关的组件,若控制器未正确关联GraphQL配置,会导致自动配置GraphQlTester失败。

3. 核对测试类的包结构

测试类需与被测试的PostGraphQLController处于相同包或子包下,或者确保Spring的组件扫描能覆盖到控制器类,避免因组件扫描范围问题导致容器无法识别目标控制器。

4. 手动配置GraphQlTester(备选方案)

若上述方法无效,可手动构建GraphQlTester实例:

@GraphQlTest(PostGraphQLController.class)
class QueryTests {
    @Autowired
    WebTestClient webTestClient;
    private GraphQlTester graphQlTester;

    @MockBean
    PostServiceImpl postService;

    @BeforeEach
    void setUp() {
        graphQlTester = WebGraphQlTester.create(webTestClient);
    }

    @Test
    void getAllPosts(){
        // 测试逻辑
    }
}

内容的提问来源于stack exchange,提问作者C P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 01:43:28