예시
@Test
public void matchesAnswerFalseWhenMustMatchCriteriaNotMet(){
Profile profile1 = new Profile("B B");
Question question1 = new BooleanQuestion(1, "Got bonuses?");
Criteria criteria1 = new Criteria();
Answer criteriaAnswer = new Answer(question1, Bool.TRUE);
Criterion criterion = new Criterion(criteriaAnswer, Weight.MustMatch);
criteria.add(criterion);
boolean matches = profile1.matches(criteria1);
assertFalse(matches);
}
@Test
public void matchesAnswerTrueForAnyDontCareCriteria() {
Profile profile1 = new Profile("B B");
Question question1 = new BooleanQuestion(1, "Got Milk?");
Answer profileAnswer = new Answer(question1, Bool.FALSE);
profile1.add(profileAnswer);
Criteria criteria1 = new Criteria();
Answer criteriaAnswer = new Answer(question1, Bool.TRUE);
Criterion criterion = new Criterion(criteriaAnswer, Weight.DontCare);
criteria1.add(criterion);
boolean matches = profile1.matches(criteria1);
assertTrue(matches);
}
위 코드는 모두 프로필, 퀘스천, 앤서 객체를 중복되게 생성한다. 이런 식의 비효율을 다음과 같이 줄일 수 있다.
@Before
public void create() {
profile = new Profile("Bull Hockey");
question = new BooleanQuestion(1, "Got bonuses?");
criteria = new Criteria();
}
위와 같이 @Before 어노테이션 사용으로 인스턴스의 생성을 관리한다.