Spring 테스트 환경에서는 여러 테스트들이 같은 Spring ApplicationContext
를 재사용하여 실행된다.
이는 테스트의 실행 속도를 향상시키기 위한 것이다.
그러나 어떤 테스트는 ApplicationContext
의 상태나 빈의 상태를 변경할 수 있다.
이런 변경이 다른 테스트에 영향을 주게 되면 예상치 못한 테스트 실패를 초래할 수 있다.
이러한 현상을 "컨텍스트 오염문제" 또는 "Spring 컨텍스트 오염"이라고 부른다.
이 문제를 해결하기 위한 대표적인 방법으로 @DirtiesContext
어노테이션을 사용하는 방법이 있다.
@DirtiesContext
어노테이션은 Spring 테스트 프레임워크에게 해당 테스트 실행 후 ApplicationContext
를 "더러워졌다"고 알리는 역할을 한다고 한다.
따라서 해당 어노테이션을 적용한 후의 테스트들은 새로운 ApplicationContext
를 사용하게 된다.
@DirtiesContext
적용테스트 클래스 전체에 @DirtiesContext
를 적용하면 해당 테스트 클래스의 모든 테스트 메소드 실행이 완료된 후 ApplicationContext
가 다시 로드된다.
@DirtiesContext
적용특정 테스트 메소드에만 @DirtiesContext
를 적용하면 그 테스트 메소드 실행이 끝난 후에만 ApplicationContext
가 다시 로드된다.
이렇게 @DirtiesContext
어노테이션을 활용하여 컨텍스트 오염 문제를 해결할 수 있다.
그러나 이 어노테이션을 너무 남발하게 되면 테스트 실행 속도가 느려질 수 있기 때문에 신중하게 사용해야한다.