스프링  3.1 TestContext 변경 내역은 표면적으로 보자면, 크게 두가지입니다.

  • @Configuration 지원
  • @ActiveProfiles 지원

사실 자바 설정은 스프링 3.0 부터 지원했지만, 사용하기 어렵던 이유가, 스프링 TestContext에서 사용하기 번거롭다는 점과, XML 네임스페이스에 해당하는 기능이 없다는 것이었는데, 스프링 3.1부터는 이런 문제가 완전 해결됐습니다.

[gist id=1633037 file=AppConfig.java]

이런 자바 설정 파일이 있을때, 다음과 같이 테스트를 작성할 수 있습니다.

[gist id=1633037 file=TestContext31Tests.java]

여기서 주의하실 것은, @ContextConfiguration에는 location이나 classes 둘 중 하나만 사용할 수 있다는 것입니다. 따라서, 여러 종류의 설정 파일, 보통 XML 설정과 자바 설정을 혼용하시겠죠. 그밖에 프로퍼티즈 파일도 사용할 수 있지만.. 좀.. 쓰기가 ㅋ; 암튼, 그런 경우에 설정 파일 중에 하나를 진입점으로 사용해야 합니다.

XML 설정을 진입점으로 사용하려면, 자바 설정을 컴포넌트 스캔을 하거나, 직접 <bean/>을 사용해서 XML 설정에 빈으로 등록해주면 됩니다.

반대로, 자바 설정을 진입점으로 사용하려면, XML 설정을 @ImportResource로 자바 설정에 추가해주면 됩니다.

다음으로 스프링 3.1 TestContext의 프로파일 지원 기능은 스프링 3.1에 추가된 빈 프로파일링 기능을 사용할 때, 해당 프로파일을 손쉽게 테스트할 수 있는 기능입니다.

[gist id=1633037 file=XmlProfileTests-context.xml]

이렇게 빈 프로파일을 사용한 설정 파일이 있을 때, default 프로파일이 제대로 적용되는지, korea 라는 프로파이일 때 toby라는 id를 가진 빈이 정말 다른 걸로 바뀌는지, 다음과 같이 확인할 수 있습니다.

[gist id=1633037 file=XmlProfileTests.java]