@Override
public User editDescription(User user, String description) throws UserNotFoundException {
user.setAboutMe(description);
User returnedUser = userRepository.save(user);
if (returnedUser == null) {
throw new UserNotFoundException();
}
return returnedUser;
}
我有这个服务实现,测试用例是:
@Test
public void shouldEditDescriptionOfTheUser() throws UserNotFoundException{
databuilderService.createAll();
User user = userService.findByEmail("abc@gmail.com");
user.setAboutMe("It's a description about the user");
userService.save(user);
String aboutMe = user.getAboutMe();
LOGGER.info(aboutMe);
Assert.assertNotNull(aboutMe);
}
这个测试案例涵盖了所有分支机构吗?我应该编写另一个测试用例来检查用户对象的值(空检查),这是一个服务中的分支吗?
答案 0 :(得分:0)
这个测试用例是否覆盖了所有分支?
不,不。
显然它什么都没有,因为它根本不会调用被测试的方法!
顺便说一句:我不知道您的存储库,但userRepository.save(user)
可能总是返回给定的用户,因此if (returnedUser == null)
可能不存在,并且删除它更有用if
而不是为。
我应该写另一个测试吗? 你应该开始让你的第一个测试成为有用的测试。该测试根本不是测试。因为它甚至没有调用被测试的方法!
首先用断言替换Logger并调用方法:
@Test
public void shouldEditDescriptionOfTheUser() throws UserNotFoundException{
databuilderService.createAll(); //I would create just a single user instead
User user = userService.findByEmail("abc@gmail.com");
String newDesciption = "It's a description about the user";
Assert.notEquals("precondition", newDesciption , user.getAboutMe);
xxx.editDescription(user, newDesciption);
Assert.assertEquals(newDesciption, user.getAboutMe());
}
也许还会检查用户是否真的已保存。
您还可以进行其他测试,测试用户是否在未加载/或之前保存的日期库中创建。