-2
  @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);
  }

这个测试用例是否涵盖所有分支?我是否应该编写另一个测试用例来检查作为服务分支的用户对象(空检查)的值?

4

1 回答 1

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());
}

也许还要检查用户是否真的被保存了。

您还可以进行其他测试,测试用户是在之前未加载/或保存时在数据库中创建的。

于 2014-12-17T21:43:39.937 回答