더북(TheBook)

2.3 단일 경로 커버

 

 

matches() 메서드에서 다수의 ‘흥미로운’ 로직은 for 반복문 안에 있습니다. 반복문을 따라 한 가지 경로를 커버하는 단순한 테스트를 작성해 보겠습니다.

코드를 보았을 때 두 가지 관점은 분명해 보입니다. Profile 인스턴스가 필요하고 matches() 메서드에 인자로 넘길 Criteria 객체가 필요합니다.

matches() 메서드 안에 있는 코드를 분석하고 Criteria, Criterion, Questions 클래스의 생성자를 보면 유용한 Criteria 객체를 어떻게 만들어야 할지 가늠할 수 있습니다.

분석으로 테스트의 준비(arrange) 단계를 작성해 보았습니다.

iloveyouboss_06/test/iloveyouboss/ProfileTest.java

@Test
public void test() {
    Profile profile = new Profile("Bull Hockey, Inc.");
    Question question = new BooleanQuestion(1, "Got bonuses?");
    Criteria criteria = new Criteria();
    Answer criteriaAnswer = new Answer(question, Bool.TRUE);
    Criterion criterion = new Criterion(criteriaAnswer, 
                                        Weight.MustMatch);
    criteria.add(criterion);
}

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.