2011-09-29 6 views
1

나는 봄에 상당히 익숙하다. 나의 이해는 조금 긁적하다. 그래서 나랑 곰이 멍청이를 위해 대답한다.스프링 테스트 구성

저는 (xml) 스프링 구성의로드가있는 상대적으로 큰 maven 기반 프로젝트에서 작업하기 시작했습니다. 이를 위해 JUnit 테스트가 많이 있습니다. 현재 테스트의 봄 구성은 핵심 프로젝트 모듈의 구성을 대체합니다. 이는 주 프로젝트의 구성을 변경하면 테스트 모듈에 변경 사항이 반영되지 않으므로 문제가됩니다. 재미있는 테스트 결과를 얻을 수 있습니다.

현재 테스트 모듈 구성이 주 모듈 구성을 대체하는 것이 아니라 대체하도록이 구조가 변경되고 있습니다. 따라서 우리는 각 테스트에 대해 관심이있는 특정 콩을 재정의해야합니다.

이렇게하는 것이 가장 좋은 방법입니까? 다른 방법이 있습니까? 이것을 정밀하게 조정하여 테스트를 위해 특정 빈의 특정 setter를 오버레이 할 수 있습니다 (전체 빈 대신).

모든 조언을 주시면 감사하겠습니다.

+0

무엇을 테스트하려고합니까? MVC 컨트롤러와 응용 프로그램 서비스는 Spring 컨텍스트 외부에서 별도의 구성없이 테스트합니다. – blank

+0

MVC가 아닌 프론트 엔드의 핵심 코드입니다. 주로 DB 액세스 클래스, 사용자 정의 파이프 라인 등을 테스트합니다. 문제는 대부분 프로젝트의 구성 가능한 특성 때문입니다. 예를 들어 다양한 xsd 등을 사용합니다.내부 데이터 유형 등을 정의 할 수 있습니다. – James

답변

1

별도의 (논리적 인) 단위로 기본 구성을 분할하고 필요에 따라 테스트 구성으로 가져올 수 있습니다.

Spring 3.1은 XML 프로필을 소개합니다. 이것은 테스트에 적합합니다 (환경에 따라 다른 특정 구성으로). 마침내 아직 출시되지는 않았지만 새로운 프로젝트에서는 milestone을 사용하게 될 것입니다.

1

테스트 방법을 망쳐야하는 아우지는 자기 의견으로는 조금 이상합니다.

필자는 가능하면 피하고, 스프링 자원을 사용하여 의존성 주입, 테스트 및 개발자 및 모의 프레임 워크에 대한 다양한 응용 프로그램 컨텍스트를 사용하여 내가 생각할 수있는 거의 모든 것을 테스트 할 수 있습니다.

어쩌면 당신은 그것들을 사용할 수 있습니다.

예를 들어, 사용자 보안 컨텍스트를 시뮬레이트하는 것은 약간 어렵지만 봄에는 상당히 쉽습니다. 테스트를 위해 application-context.xml을 작성한 다음 (해당 항목을 가리 키기 만하면) 팩토리를 할당하면됩니다 인증 유형의 Bean (인터페이스)을 작성하고이 모빌 응답을 자동화하기 위해 쉬운 모의 객체를 사용할 수 있습니다.

하지만 작동하려면 SecurityContext.getContext ...를 호출하는 대신 해당 인증 빈을 팩토리에서 주입해야합니다.

1

기본 구성에서 모든 환경 종속적 인 구성 (예 : datasource, jms connectionfactory 등)을 별도의 구성 파일 (infrastructure-config.xml과 유사 함)으로 분리하십시오. 테스트 & 배포에서 변경되지 않는 구성은 다른 파일 인 application-config.xml로 이동합니다.

이제 테스트를 위해 인프라 구성 파일 인 test-infrastructure-config.xml의 새 버전 만 만들고 기본 설정의 application-config와 함께 사용하십시오.