Awaitility

정의

Awaitility비동기 처리 결과를 일정 시간 동안 기다리면서 검증할 수 있게 해주는 테스트 유틸리티이다. 테스트에서 즉시 결과가 나오지 않는 상황을 안정적으로 확인할 때 사용한다.

비동기 작업, 메시지 처리, 백그라운드 이벤트처럼 시간차가 있는 로직을 테스트할 때 유용하다.

🧩 역할

  • 비동기 결과를 기다린다
  • 조건이 만족될 때까지 반복 확인한다
  • 시간 제한이 있는 테스트를 작성한다
  • 비동기 테스트의 안정성을 높인다

🛠 사용 예시

atMost

await()
        .atMost(5, SECONDS)
        .until(() -> testMapper.insert(EXPECTED_OBJECT) > 0);

atLeast

await()
        .atLeast(5, SECONDS)
        .until(() -> testMapper.insert(EXPECTED_OBJECT) > 0);

during

await()
        .during(2, SECONDS)
        .atMost(5, SECONDS)
        .until(() -> testMapper.insert(EXPECTED_OBJECT) > 0);

🧩 주요 메서드

메서드 설명
atMost 최대 대기 시간을 지정한다
atLeast 최소 대기 시간을 지정한다
during 지정한 시간 동안 조건이 계속 유지되는지 확인한다
until 조건이 만족될 때까지 기다린다

🛠 Gradle 의존성

dependencies {
    testImplementation "org.awaitility:awaitility:4.0.3"
}

⚠️ 주의사항

  • 비동기 작업이 실제로 완료되는 시점을 고려해야 한다.
  • 너무 짧은 대기 시간은 테스트를 불안정하게 만들 수 있다.
  • 조건식은 명확하게 작성하는 것이 좋다.
  • 단순한 동기 테스트에는 굳이 사용할 필요가 없다.

📌 정리

  • Awaitility는 비동기 테스트에서 조건을 기다리며 검증하는 도구다.
  • atMost, atLeast, during으로 대기 조건을 조절할 수 있다.
  • 비동기 작업이 있는 테스트의 안정성을 높이는 데 유용하다.

연결문서

댓글남기기