@DirtiesContext
🧪 @DirtiesContext
정의
@DirtiesContext는 테스트 실행 후 Spring Test Context를 더럽혀서 캐시를 무효화하고 다시 생성하게 만드는 애너테이션이다.
테스트 간에 같은 Context를 공유할 때 생길 수 있는 상태 오염 문제를 방지하는 데 사용한다.
🧩 역할
- 테스트 간 Context 공유로 인한 문제를 막는다.
- 테스트 종료 시 캐시된 Context를 폐기할 수 있다.
classMode에 따라 Context 재생성 시점을 조절할 수 있다.
🛠 사용법
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = RpaViewConfiguration.class)
@Transactional
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
public class ViewTestBase {
@Test
public void dummyTest(){
fail();
}
}
⏱ classMode
- 더럽혀질 시점을 지정한다.
| classMode | 시점 |
|---|---|
BEFORE_CLASS |
테스트 클래스 생성 전 |
BEFORE_EACH_TEST_METHOD |
각 테스트 메서드 실행 전 |
AFTER_EACH_TEST_METHOD |
각 테스트 메서드 실행 후 |
AFTER_CLASS |
테스트 클래스의 모든 메서드 종료 후 |
⚠️ 주의사항
- 모든 테스트에 남발하면 실행 시간이 길어질 수 있다.
- 상태를 공유하는 테스트에서만 필요한 경우에 사용하는 편이 좋다.
classMode에 따라 Context가 다시 만들어지는 시점이 달라진다.
📌 정리
@DirtiesContext는 테스트 Context 캐시를 무효화할 때 사용한다.- 테스트 간 상태 오염을 줄이는 데 유용하다.
- 필요한 시점에만 사용해야 테스트 속도를 유지할 수 있다.
댓글남기기