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

MapStruct映射器测试报错:ParameterResolutionException问题求助

问题分析与解决

报错信息(中文翻译)

org.junit.jupiter.api.extension.ParameterResolutionException: 没有为构造函数[public com.asd.mapper.UserToUserDTOMapperTest(com.asd.mapper.UserToUserDTOMapper)]中的参数[final com.asd.mapper.UserToUserDTOMapper mapper]注册参数解析器

问题原因

测试类通过@RequiredArgsConstructor尝试注入MapStruct生成的Spring Bean,但JUnit 5默认不会启动Spring容器,无法识别并注入Spring管理的Bean,导致找不到参数解析器。

解决方案

方案一:启用Spring测试上下文(适合整合Spring环境的测试)

给测试类添加@SpringBootTest注解,让JUnit启动Spring容器,自动注入MapStruct生成的Bean:

import lombok.RequiredArgsConstructor;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import static org.junit.jupiter.api.Assertions.*;

@SpringBootTest
@RequiredArgsConstructor
class UserToUserDTOMapperTest {
    private final UserToUserDTOMapper mapper;

    String NAME = "asd";
    String EMAIL = "asd@gmail.com";

    @Test
    public void testMapUserToUserDTO() {
        User user = User.builder().name(NAME).email(EMAIL).build();
        UserDTO userDTO = mapper.mapUserToUserDTO(user);
        assertNotNull(userDTO);
        assertEquals(NAME, userDTO.getName());
        assertEquals(EMAIL, userDTO.getEmail());
    }
}

方案二:手动实例化MapStruct实现类(轻量测试,仅验证映射逻辑)

MapStruct会自动生成名为UserToUserDTOMapperImpl的实现类,直接手动实例化即可,无需依赖Spring容器:

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

class UserToUserDTOMapperTest {
    private final UserToUserDTOMapper mapper = new UserToUserDTOMapperImpl();

    String NAME = "asd";
    String EMAIL = "asd@gmail.com";

    @Test
    public void testMapUserToUserDTO() {
        User user = User.builder().name(NAME).email(EMAIL).build();
        UserDTO userDTO = mapper.mapUserToUserDTO(user);
        assertNotNull(userDTO);
        assertEquals(NAME, userDTO.getName());
        assertEquals(EMAIL, userDTO.getEmail());
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 19:10:10