我在为SpringJUnit4ClassRunner.class)配置测试时遇到了问题。我的问题是因为我的映射器从map结构到达时返回null。
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
class UserServiceTestSuite {
@Spy
private UserDto userDto;
@Spy
private UserMapper userMapper;
@Mock
private UserRepository userRepository;
@InjectMocks
private UserService userService;
private User createUser() {
return User.builder()
.firstName("Steve")
.lastName("Jobs")
.login("SteveJobs")
.password("password")
.role(UserRole.ROLE_ADMIN)
.build();
}
@Test
public void testCreateUser() {
//Given
User user = createUser();
Mockito.when(userRepository.save(user)).thenReturn(user);
//When
UserDto userDto = userService.createUser(userMapper.mapToUserDto(user));
Long id = userDto.getId();
//Then
Assert.assertEquals("Steve", userDto.getFirstName());
Assert.assertEquals("Jobs", userDto.getLastName());
Assert.assertEquals("SteveJobs", userDto.getLogin());
Assert.assertEquals("ROLE_ADMIN", userDto.getRole());
}
我认为你有两个选择:
@springboottest(classes={usermapperimpl.class})
和@autowired private UserMapper UserMapper;
private UserMapper UserMapper=new UserMapperImpl()
(并删除@spy
)使用第二种方法时,您甚至可以删除@SpringBootTest
,因为在给定的代码段中,您不需要Spring上下文(由注释创建)。@RunWith(MockitoJUnitRunner.class)
可以用于将用@Mock
注释的对象自动注入UserService
。在不创建spring上下文的情况下编写单元测试有助于降低测试套件的执行时间。
我试图用为MapStruct映射器编写单元测试。 单元测试类: 任何帮助都将不胜感激。
当前有包含内部映射器的映射器(有时,它们本身包含其他内部映射器)。
我正在使用MapStruct,mapstruct-jdk8版本1.1.0.final并定义我通过spring注入的抽象类。 我正在研究如何能够通过Junit测试来测试它们?我有一个基本的主映射器,它将使用2个子映射器 我尝试了几种方法,但无法正确实例化映射器来测试它。 java.lang.RuntimeException:java.lang.ClassNotFoundException:找不到Co
我使用的是一个用MapStruct生成的映射器: 缺省组件模型是spring(在pom.xml中设置)
我有下面的映射器类,我想在其中使用。我正在尝试构造函数注入,但不起作用,并且正在打印。 mapStruct实现类 如果我使用使用字段注入,这样它就可以正常工作。这意味着Spring不支持类的构造函数注入。是因为类不能直接实例化,需要子类来实例化吗? 有没有什么方法可以在实现类中创建一个构造函数,如下所示: 这样,构造函数注入应该可以工作。
例如,我有以下接口映射器: 在代码中,您可以看到映射和一些默认方法,其中包含其他映射。如何在Mapstruct映射中使用这些方法,以便Mapstruct使用这些方法在字段中填充值?