🧪 @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 캐시를 무효화할 때 사용한다.
  • 테스트 간 상태 오염을 줄이는 데 유용하다.
  • 필요한 시점에만 사용해야 테스트 속도를 유지할 수 있다.

연결문서

댓글남기기