Assertion 메서드 정리
기본
| 메서드 | 설명 | 주로 사용 예시 |
|---|
assertEquals(expected, actual) | 기대값 == 실제값 | 숫자, 문자열 결과 비교 |
assertNotEquals(unexpected, actual) | 기대값 != 실제값 | 실패 조건 확인 |
assertTrue(condition) | 조건이 true | boolean 결과 비교 |
assertFalse(condition) | 조건이 false | boolean 부정 결과 |
assertNull(object) | null 확인 | 반환값이 없는 경우 |
assertNotNull(object) | null 아님 확인 | 정상 생성 확인 |
assertSame(expected, actual) | 같은 객체 (==) 인지 확인 | 인스턴스 일치 확인 |
assertNotSame(unexpected, actual) | 다른 객체인지 확인 | 인스턴스 불일치 확인 |
assertArrayEquals(expectedArray, actualArray) | 배열이 같은지 확인 | 결과 배열 비교 |
코드 예시
assertThat(actual).isEqualTo(expected);
assertThat(actual).isNotEqualTo(expected);
assertThat(condition).isTrue();
assertThat(condition).isFalse();
assertThat(object).isNull();
assertThat(object).isNotNull();
예외
| 메서드 | 설명 | 주로 사용 예시 |
|---|
assertThrows(Exception.class, () -> {...}) | 예외 발생 확인 | 잘못된 입력 테스트 |
assertDoesNotThrow(() -> {...}) | 예외 없이 정상 실행 | 정상 케이스 테스트 |
코드 예시
assertThatThrownBy(() -> method()).isInstanceOf(IllegalArgumentException.class);
assertThatCode(() -> method()).doesNotThrowAnyException();
시간
| 메서드 | 설명 | 주로 사용 예시 |
|---|
assertTimeout(Duration.ofMillis(x), () -> {...}) | x 시간 이내에 끝나야 함 | 시간 성능 테스트 |
assertTimeoutPreemptively(Duration.ofMillis(x), () -> {...}) | 강제 종료 | 더 빠른 시간 검사 |
코드 예시
assertTimeout(Duration.ofSeconds(1), () -> {
Thread.sleep(500);
});
컬렉션, 배열, Map
| 메서드 | 설명 | 주로 사용 예시 |
|---|
assertIterableEquals(expected, actual) | 리스트/컬렉션 비교 | 리스트 결과 비교 |
assertLinesMatch(expected, actual) | 문자열 리스트 비교 (패턴 가능) | 줄 단위 결과 비교 |
코드 예시
assertThat(list).containsExactly(1, 2, 3);
assertThat(list).contains(2, 3);
assertThat(list).hasSize(3);
assertThat(map).containsKey("key");
assertThat(map).containsEntry("key", "value");
문자열(String)
| 메서드 | 설명 | 주로 사용 예시 |
|---|
assertTrue(string.contains("keyword")) | 특정 문자열 포함 여부 | 메시지 내용 확인 |
코드 예시
assertThat(text).startsWith("Hello");
assertThat(text).endsWith("World");
assertThat(text).contains("mid");
assertThat(text).isEqualToIgnoringCase("chatgpt");
부동소수점 (double, float)
소수점 비교: 오차범위 필수
| 메서드 | 설명 | 주로 사용 예시 |
|---|
assertEquals(expected, actual, delta) | delta(허용 오차) 이내인지 확인 | 소수점 결과 비교 |
코드 예시
assertThat(result).isCloseTo(3.1415, within(0.0001));
기타
| 메서드 | 설명 | 사용 예시 |
|---|
fail() | 강제로 실패 처리 | 예상치 못한 경로 도달 시 |
assertAll(...) | 여러 Assertion을 묶어서 한 번에 검사 | 복합 검증 |
assumeTrue(condition) | 조건 만족 안 하면 테스트 skip | 환경 의존 테스트 |
코드 예시
assertAll(
() -> assertEquals(1, calc.add(0,1)),
() -> assertEquals(2, calc.add(1,1))
);
if (unexpectedCondition) {
fail("이 경우는 발생하면 안 돼!");
}
기타 어노테이션
@BeforeClass
public static void begin() {
dao = new TestDAO();
System.out.println("begin");
}
@AfterClass
public static void end() {
System.out.println("end");
}