spring-REST (스프링 4.1.x) 테스트를 위해 스프링 테스트를 사용하는 응용 프로그램이 있습니다. 싱글 톤 빈 중 하나가 상태를 캐싱하여 사용할 수 있습니다 이 문제는 응용 프로그램에서 후속 호출을위한 것입니다. 비록 여러 Bean이 여러 테스트에서 사용 중이며 후속 테스트가 실패 할 때 여러 테스트를 실행할 때이 문제가 발생합니다. 제 질문은 teardown 상태를 어떻게 다시 설정합니까? State is not 클래스의 private 멤버는 같은 접근. 우리가? 내가 주석 콩을 사용하고 필요한 곳 autowiring에하고있는 상황에서 완전히 빈을 제거 할 수 있습니다. 나는이 솔루션을 사용하려고테스트 중에 컨텍스트에서 싱글 톤 빈을 제거합니다.
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes = ComponentTestConfig.class)
public class WebServiceComponentTest {
}
다음 링크를 How can i remove a singleton spring bean from ApplicationContext?
에 주어진하지만 항상 ((BeanDefinitionRegistry에)의 BeanFactory) .removeBeanDefinition ("에서 myBean")에는 빈 정의를 찾을 수 없음으로 faiuls;
teardown이 Bean 상태를 재설정 할 때만 테스트가 실패합니다. 콩은 응용 프로그램에 의해 사용되는 동안 발견됩니다.
'DirtiesContext' @, 이것은 당신이 새로운 애플리케이션 컨텍스트로 시작하게됩니다와 테스트 (또는 테스트 클래스)를 주석. –
나는 stackoverflow 질문 중 하나를 보았다. 이것은 거의 사용되지 않아야하고 테스트가 느려질 것입니다. 저하되는 테스트 성능을 피하고 싶습니다. 그것은 CI 파이프 라인 당 모든 체크 인을 실행하기 때문에 ... 그것을 고칠 수있는 더 좋은 방법이 있습니까? – Milind
당신이 원하는 것을 성취 할 수있는 유일한 방법은 믿을만한 방법이며, 지금까지 작성한 것을 재검토하고, 캐싱 메커니즘을 사용하는 대신 스프링 기반 캐싱 메커니즘 (특정 테스트에서는 비활성화 할 수 있음)을 사용하는 것이 유일한 방법입니다. –