【发布时间】:2017-07-11 07:07:29
【问题描述】:
我有以下服务
public UserActivityLog save(UserActivityLog userActivityLog){
LOGGER.debug("User activity save called.");
userActivityLog.setCreatedByUser(User.getUser().getUserId());
userActivityLog.setCreationTime(new Date());
return activityLogRepository.save(userActivityLog);
}
我写了下面的 Junit 来测试这个但得到了用户的空指针
@RunWith(MockitoJUnitRunner.class)
public class ActivityHistoryServiceTest {
@InjectMocks
private ActivityHistoryService activityHistoryService;
@Mock
private ActivityLogRepository activityLogRepository;
@Test
public void testSave() {
UserActivityLog userActivityLog = new UserActivityLog();
/* Called some setter methods to set value here*/
UserProfile profile = new UserProfile();
Mockito.when(User.getUser()).thenReturn(profile);
Assert.assertNotNull(activityLogRepository.save(userActivityLog));
}
}
用户类是这样的
public class User {
private User(){}
public static UserProfile getUser(){
/*some logic*/
return userProfile;
}
}
请为此提供帮助。提前致谢。
【问题讨论】:
-
你不能用 Mockito 模拟静态方法。您还可以为此使用 PowerMock。
标签: java spring unit-testing junit4