2014-12-17 3 views
-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("[email protected]"); 

    user.setAboutMe("It's a description about the user"); 
    userService.save(user); 
    String aboutMe = user.getAboutMe(); 
    LOGGER.info(aboutMe); 
    Assert.assertNotNull(aboutMe); 
    } 

모든 지점을 포함하는이 테스트 케이스인가? 서비스중인 지점 인 사용자 객체 (null 검사)의 값을 검사하기위한 다른 테스트 케이스를 작성해야합니까?

+2

예. 그렇습니다. –

+1

유일한 단언은'aboutMe is not null '입니다. –

답변

0

모든 분기를 포함하는 테스트 케이스입니까?

아니요.

테스트중인 메소드를 전혀 호출하지 않으므로 아무 것도 다루지 않습니다.

BTW : 나는 당신의 저장소를 모르겠지만,이 userRepository.save(user)는 항상 아마 if (returnedUser == null)이 nonesence이며, 주어진 사용자를 반환 할 가능성이, 그리고 그 if 대신에 대한 테스트를 쓰는 제거하는 것이 더 유용합니다.

나는 당신이 첫 번째 테스트합니다 유용한 테스트하기 위해 시작해야 다른 테스트 를 작성해야합니다. 이 테스트는 전혀 테스트가 아닙니다. 그것은 테스트중인 메소드를 호출하지 않기 때문입니다!

먼저 어설으로 로거를 교체하고 방법 호출 :
@Test 
public void shouldEditDescriptionOfTheUser() throws UserNotFoundException{ 
    databuilderService.createAll(); //I would create just a single user instead 
    User user = userService.findByEmail("[email protected]"); 

    String newDesciption = "It's a description about the user"; 
    Assert.notEquals("precondition", newDesciption , user.getAboutMe);  

    xxx.editDescription(user, newDesciption); 

    Assert.assertEquals(newDesciption, user.getAboutMe()); 
} 

어쩌면 또한 사용자가 실제로 저장되어 있는지 확인합니다.

이전에로드 또는 저장되지 않았을 때 사용자가 datebase에서 만들어 졌는지 테스트하는 다른 테스트를 수행 할 수도 있습니다.

관련 문제