[Spring] 12.Test 메서드 정리

Dami·2025년 4월 26일

Assertion 메서드 정리

기본

메서드설명주로 사용 예시
assertEquals(expected, actual)기대값 == 실제값숫자, 문자열 결과 비교
assertNotEquals(unexpected, actual)기대값 != 실제값실패 조건 확인
assertTrue(condition)조건이 trueboolean 결과 비교
assertFalse(condition)조건이 falseboolean 부정 결과
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("이 경우는 발생하면 안 돼!");
}

기타 어노테이션

	//각 테스트를 실행하기 전에 먼저 실행
	//@Before
	
	//모든 테스트를 실행하기 전에 딱 한번 먼저 실행
	@BeforeClass
	public static void begin() {
		dao = new TestDAO();
		System.out.println("begin");
	}
	
	//각 테스트를 실행하고 난 후에 실행
	//@After
	
	//모든 테스트를 실행하고 난후에 딱 한번 먼저 실행
	@AfterClass
	public static void end() {
		System.out.println("end");
	}


0개의 댓글