Loading...
Spring Framework Reference Documentation 7.0.2의 Parallel Test Execution의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
Spring TestContext Framework는 단일 JVM 내에서 테스트를 병렬로 실행하기 위한 기본적인 지원을 제공합니다. 일반적으로 이는 대부분의 테스트 클래스 또는 테스트 메서드를 테스트 코드나 설정의 변경 없이 병렬로 실행할 수 있음을 의미합니다.
병렬 테스트 실행 설정 방법에 대한 자세한 내용은 사용하는 테스트 프레임워크, 빌드 도구, 또는 IDE의 문서를 참조하십시오.
테스트 수트에 동시성을 도입하면 예기치 않은 부작용, 이상한 런타임 동작, 그리고 간헐적이거나 겉보기에는 무작위로 실패하는 테스트가 발생할 수 있음을 명심해야 합니다. 따라서 Spring Team은 테스트를 병렬로 실행하지 말아야 하는 경우에 대한 다음과 같은 일반적인 가이드라인을 제공합니다.
다음과 같은 경우에는 테스트를 병렬로 실행하지 마십시오:
@DirtiesContext 지원을 사용하는 경우.@MockitoBean 또는 @MockitoSpyBean 지원을 사용하는 경우.@MockBean 또는 @SpyBean 지원을 사용하는 경우.@TestMethodOrder 지원 또는 테스트 메서드가 특정 순서로 실행되도록 보장하기 위해 설계된 어떤 테스트 프레임워크 기능을 사용하는 경우. 그러나 이는 전체 테스트 클래스가 병렬로 실행되는 경우에는 적용되지 않습니다.병렬 테스트 실행이 현재 테스트에 대한
ApplicationContext가 더 이상 활성 상태가 아니라는 예외와 함께 실패하는 경우, 이는 일반적으로 다른 스레드에서ContextCache에서ApplicationContext가 제거되었음을 의미합니다. 이는@DirtiesContext의 사용으로 인한 것일 수 있거나ContextCache에서의 자동 제거로 인한 것일 수 있습니다.@DirtiesContext가 원인인 경우,@DirtiesContext사용을 피할 방법을 찾거나 해당 테스트를 병렬 실행에서 제외해야 합니다.ContextCache의 최대 크기를 초과한 경우, 캐시의 최대 크기를 늘릴 수 있습니다. 자세한 내용은 context caching에 대한 논의를 참조하십시오.
Spring TestContext Framework에서의 병렬 테스트 실행은 기반이 되는
TestContext구현이TestContext의 javadoc에 설명된 대로 복사 생성자를 제공하는 경우에만 가능합니다. Spring에서 사용되는DefaultTestContext는 이러한 생성자를 제공합니다. 그러나 커스텀TestContext구현을 제공하는 서드파티 라이브러리를 사용하는 경우, 해당 구현이 병렬 테스트 실행에 적합한지 확인해야 합니다.
Executing SQL Scripts
TestContext Framework Support Classes