java - 无法从 mapStruct Autowiring Mapper

标签 java spring spring-boot testing integration-testing

我无法在测试中从mapstruct Autowiring Mapper。在使用 SpringRunner.class 进行测试时可以,但是当我尝试使用 MockitoJunitRunner 时,这是不可能的。

@Mapper(componentModel = "spring", uses = {})
public interface UserMapper {
    UserMapper MAPPER = Mappers.getMapper(UserMapper.class);

    User mapToUser(UserDto userDto);

    UserDto mapToUserDto(User user);

    List<UserDto> mapToUserDtoList(List<User> userList);
}
@RunWith(SpringRunner.class)
@SpringBootTest
public class nowyTest {
    @Spy
    private UserMapper userMapper;

    private User createUser() {
        return User.builder()
                .firstName("Steve")
                .lastName("Jobs")
                .login("SteveJobs")
                .password("password")
                .role(UserRole.ROLE_ADMIN)
                .build();

    }

    @Test
    public void testMapper() {
        User user = createUser();
        UserDto userDto = userMapper.mapToUserDto(user);

        System.out.println(userDto);
        Assert.assertEquals(userDto.getFirstName(), "Steve");
    }

}

它返回 NPE :(

最佳答案

您是否尝试过包含注释@Import(yourClass)?在这种情况下:

@RunWith(SpringRunner.class)
@SpringBootTest
@Import(UserMapper.class)
public class nowyTest {
   ...

您可以查看this tutorial有关如何在 SpringBoot 测试中启动 bean 的更多信息。

关于java - 无法从 mapStruct Autowiring Mapper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62223614/

相关文章:

java - SimpleIdentificResourceAssembler 无法解析为类型

java - Android facebook 个人资料获取姓名

java - Spring 的 JdbcTemplate 和事务

java - Hibernate 4 -> 5 迁移 : NamingStrategy changes, 找不到表

spring-boot - 在Spring Boot中使用不同的弹性指数进行测试

Spring Boot 使用配置文件启用/禁用嵌入式 tomcat

JavaFX 预加载器配置 IntelliJ IDEA(Java 9 及更高版本)

java - CyclicBarrier 线程安全吗?

java - 为什么按下的键不会触发任何事件?

java - Spring MVC 3.0 从 Sql 查询中获取值