我无法在测试中从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/