2021. 8. 11. 16:52ㆍJAVA/JUNIT
글의 목적
- 2. JUNIT 사용하기 글에서 Profile 클래스의 matches 메서드에 대한 테스트 케이스 고려사항을 구현하는 것을 실습합니다.
https://yonghwankim-dev.tistory.com/89
2. JUNIT 사용
본 글은 자바와 JUNIT을 활용한 실용주의 단위 테스트 도서의 내용을 복습하기 위해 작성된 글입니다. 글의 목적 실전에 가까운 코드를 분석 코드에 대한 경로를 커버하는 1~2개의 테스트 코드 구
yonghwankim-dev.tistory.com
위 글의 테스트 고려사항에서 몇몇개는 다른 테스트 케이스와 중복되는 사항이 존재합니다.
Profile 클래스의 matches 메서드 테스트 케이스 고려사항
1. Criteria 인스턴스가 Criterion 객체를 포함하지 않을 때
// 테스트 코드3, Criteria 인스턴스가 Criterion 객체를 포함하지 않을때
@Test
public void notContainCriterionForCriteria(){
// 준비
// 없음
// 실행 : Criterion 객체가 포함되지 않고 매치 수행
boolean matches = profile.matches(criteria);
// 단언 : false
assertFalse(matches);
}
2. answer.get()에서 반환된 Answer 객체가 null일 때
// 테스트 코드4, answer.get()에서 반환된 Answer 객체가 null일 때
@Test(expected = NullPointerException.class)
public void answerIsNullWhenAnswerGet(){
// 준비
Question question2 = new BooleanQuestion(2, "not Got bonuses?");
profile.add(new Answer(question, Bool.FALSE));
criteria.add(new Criterion(new Answer(question2, Bool.TRUE), Weight.MustMatch));
// 실행 : profile에 존재하지 않은 criterion 객체 설정후 수행
// 단언 : NullPointerException
boolean matche = profile.matches(criteria);
}
3.criterion.getAnswer()의 반환값이 null일 때
// 테스트 코드5, criterion.getAnswer()의 반환값이 null일때
@Test(expected = NullPointerException.class)
public void criterionGetAnswerIsNull(){
// 준비
profile.add(new Answer(question, Bool.FALSE));
criteria.add(new Criterion(null, Weight.MustMatch));
// 실행 : criterion.getAnswer()의 반환값이 null이 되도록 수행
// 단언 : NullPointerException
boolean matche = profile.matches(criteria);
}
4. criterion.getAnswer().getQuestionText()의 반환값이 null일때
// 테스트 코드6, criterion.getAnswer().getQuestionText()의 반환값이 null일때
@Test(expected = NullPointerException.class)
public void criterionGetAnswerGetQuestionTextIsNull(){
// 준비
profile.add(new Answer(question, Bool.FALSE));
criteria.add(new Criterion(new Answer(null,Bool.TRUE), Weight.MustMatch));
// 실행 : criterion.getAnswer().getQuestionText()의 반환값이 null일때 수행
// 단언 : NullPointerException
boolean matche = profile.matches(criteria);
}
5. criterion.getWeight()의 반환값이 Weight.DontCare여서 match 변수가 true일때
// 테스트 코드7, criterion.getWeight()의 반환값이 Weight.DontCare여서 match 변수가 true일때
@Test
public void criterionGetWeightIsDontCare(){
// 준비
profile.add(new Answer(question, Bool.FALSE));
criteria.add(new Criterion(new Answer(question,Bool.TRUE), Weight.DontCare));
// 실행 : profile 대답은 false, criterion 대답은 true, 하지만 가중치(Weight)는 DontCare, 매치수행
boolean matche = profile.matches(criteria);
// 단언 : true
assertTrue(matche);
}
6. 두 조건문이 모두 false여서 결과적으로 match 변수가 false가 될때
// 테스트 코드8, 두 조건문이 모두 false여서 결과적으로 match 변수가 false가 될때
@Test
public void twoConditionIsAllFalse(){
// 준비
profile.add(new Answer(question, Bool.FALSE));
criteria.add(new Criterion(new Answer(question,Bool.TRUE), Weight.MustMatch));
// 실행 : profile 대답은 false, criterion 대답은 true, 무조건 일치일때 매치 수행
boolean matche = profile.matches(criteria);
// 단언 : false
assertFalse(matche);
}
7. match 변수가 false이고 criterion.getWeight()가 Weight.MustMatch여서 kill 변수가 true일 때
// 테스트 코드9, match 변수가 false이고 criterion.getWeight()가 Weight.MustMatch여서 kill 변수가 true일 때
@Test
public void matchIsFalseAndCriterionGetWeightIsMustMatch(){
// 준비
profile.add(new Answer(question, Bool.FALSE));
criteria.add(new Criterion(new Answer(question,Bool.TRUE), Weight.MustMatch));
// 실행 : profile 대답은 false, criterion 대답은 true, 무조건 일치일때 매치 수행
boolean matche = profile.matches(criteria);
// 단언 : false
assertFalse(matche);
}
8. match 변수가 true이기 때문에 kill 변수가 변하지 않을때
// 테스트 코드10, match 변수가 true이기 때문에 kill 변수가 변하지 않을때
@Test
public void matchIsTrue(){
// 준비
profile.add(new Answer(question, Bool.TRUE));
criteria.add(new Criterion(new Answer(question,Bool.TRUE), Weight.MustMatch));
// 실행 : profile 대답은 true, criterion 대답은 true, 무조건 일치일때 매치 수행
boolean matche = profile.matches(criteria);
// 단언 : true
assertTrue(matche);
}
9. criterion.getWeight()가 Weight.MustMatch가 아니기 때문에 kill 변수가 변하지 않을때
// 테스트 코드11, criterion.getWeight()가 Weight.MustMatch가 아니기 때문에 kill 변수가 변하지 않을때
@Test
public void matchIsTrueAndCriterionGetWeightIsMustMatch(){
// 준비
profile.add(new Answer(question, Bool.FALSE));
criteria.add(new Criterion(new Answer(question,Bool.TRUE), Weight.DontCare));
// 실행 : profile 대답은 false, criterion 대답은 true, MustMatch가 아닐때 수행
boolean matche = profile.matches(criteria);
// 단언 : true
assertTrue(matche);
}
실행결과
References
자바와 JUnit을 활용한 실용주의 단위 테스트
실습 소스 코드 : https://github.com/yonghwankim-dev/JUNIT-study/tree/main/iloveyouboss_06/test/iloveyouboss
'JAVA > JUNIT' 카테고리의 다른 글
AssertJ 테스트시 객체의 동등성(Equality) 검증 방법 (0) | 2024.04.07 |
---|---|
3.2 예외를 기대하는 세 가지 방법 (0) | 2021.08.13 |
3.1 JUnit 단언 (0) | 2021.08.13 |
2. JUNIT 사용 (1) | 2021.08.11 |
1. 첫번째 JUnit 테스트 만들기 (0) | 2021.08.10 |