Awaitility
⏳ 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으로 대기 조건을 조절할 수 있다.- 비동기 작업이 있는 테스트의 안정성을 높이는 데 유용하다.
댓글남기기