我应该为 void 方法(包括存储库调用)编写单元测试吗?
Should I write unit test for void methods (includes repository call)?
我的 spring 启动应用程序中有以下代码片段:
@Service
public class UserServiceImpl implements UserService {
private final UserRepository userRepository;
public UserServiceImpl(UserRepository ...) {...}
@Override
public void saveOrUpdateUser(UserDAO user) {
userRepository.save(user);
}
}
测试用例class:
class UserServiceImplUnitTest {
private UserRepository userRepository = mock(UserRepository.class);
private UserService userService;
@BeforeEach
void setup() {
userService = new UserServiceImpl(userRepository);
}
}
我正在使用 mockito 编写我的测试用例。但是,对于这个 void 方法,我应该编写测试用例吗?如果可以,怎么写?
是的。您应该主要关注 UserServiceImpl
是否以预期的方式与 UserRepository
交互,例如它是否使用正确的参数在 UserRepository
上调用正确的方法等
通过使用 Mockito 模拟 UserRepository
,您可能会得到如下所示的测试:
@ExtendWith(MockitoExtension.class)
public class UserServiceImplUnitTest {
@Mock
UserRepository userRepository ;
UserService userService;
@BeforeEach
void setup() {
userService = new UserServiceImpl(userRepository);
}
@Test
public void testSaveOrUpdateUser(){
UserDAO user = createDummyUser();
userService.saveOrUpdateUser(user);
verify(userRepository).save(same(user));
}
}
我的 spring 启动应用程序中有以下代码片段:
@Service
public class UserServiceImpl implements UserService {
private final UserRepository userRepository;
public UserServiceImpl(UserRepository ...) {...}
@Override
public void saveOrUpdateUser(UserDAO user) {
userRepository.save(user);
}
}
测试用例class:
class UserServiceImplUnitTest {
private UserRepository userRepository = mock(UserRepository.class);
private UserService userService;
@BeforeEach
void setup() {
userService = new UserServiceImpl(userRepository);
}
}
我正在使用 mockito 编写我的测试用例。但是,对于这个 void 方法,我应该编写测试用例吗?如果可以,怎么写?
是的。您应该主要关注 UserServiceImpl
是否以预期的方式与 UserRepository
交互,例如它是否使用正确的参数在 UserRepository
上调用正确的方法等
通过使用 Mockito 模拟 UserRepository
,您可能会得到如下所示的测试:
@ExtendWith(MockitoExtension.class)
public class UserServiceImplUnitTest {
@Mock
UserRepository userRepository ;
UserService userService;
@BeforeEach
void setup() {
userService = new UserServiceImpl(userRepository);
}
@Test
public void testSaveOrUpdateUser(){
UserDAO user = createDummyUser();
userService.saveOrUpdateUser(user);
verify(userRepository).save(same(user));
}
}