예제 7-7은 두 개의 새로운 애너테이션을 보여준다. @ProfileValueSourceConfiguration은 CustomProfile 클래스를 가리키며, 몇몇 비즈니스 로직을 수행하려면 이 클래스가 필요함을 유닛 테스트에 알린다. @IfProfileValue 애너테이션에는 이름(키)를 전달하고 값을 리턴받는다. 테스트를 수행하면 다음과 같은 출력을 볼 수 있다.
2014-07-30 17:27:57,432 DEBUG [Test worker] SearchEngineService created: com.apress.isf.spring.service.SearchEngineService@4cca713
2014-07-30 17:27:57,639 DEBUG [Test worker] Document DAO set: com.apress.isf.spring.data.DocumentRepository@befc461
2014-07-30 17:27:57,685 DEBUG [Test worker] Using Spring Test fixtures:
2014-07-30 17:27:57,686 DEBUG [Test worker] Start <findByType> Params: Type Definition:
Name: WEB
Description: Web Link
Extension: .url
2014-07-30 17:27:57,690 DEBUG [Test worker] Start <listAll> Params:
2014-07-30 17:27:57,694 DEBUG [Test worker] Start <getAll> Params:
2014-07-30 17:27:57,694 DEBUG [Test worker] End <getAll> Result:[Lcom.apress.isf.java.model.Document;@4a93e25f
2014-07-30 17:27:57,697 DEBUG [Test worker] End <listAll> Result: [com.apress.isf.java.model.Document@2685a92f, com.apress.isf.java.model.Document@771ecb9a, com.apress.isf.java.model.Document@64b99fce, com.apress.isf.java.model.Document@316d181c]
2014-07-30 17:27:57,702 DEBUG [Test worker] End <findByType> Result: [com.apress.isf.java.model.Document@316d181c]
2014-07-30 17:27:57,705 DEBUG [Test worker] Start <listAll> Params:
2014-07-30 17:27:57,705 DEBUG [Test worker] Start <getAll> Params:
2014-07-30 17:27:57,705 DEBUG [Test worker] End <getAll> Result:[Lcom.apress.isf.java.model.Document;@3aaa13cf
2014-07-30 17:27:57,705 DEBUG [Test worker] End <listAll> Result: [com.apress.isf.java.model.Document@2685a92f, com.apress.isf.java.model.Document@771ecb9a, com.apress.isf.java.model.Document@64b99fce, com.apress.isf.java.model.Document@316d181c]
2014-07-30 17:27:57,713 DEBUG [Test worker] Using Spring Test fixtures on Unix:
두 테스트 모두 올바른 값을 리턴하므로 정상적으로 실행한다.
<Note> @ProfileValueSourceConfiguration을 제거하면 유닛 테스트가 System.getProperty(propertyKey)에 기반을 둔다. 이는 Unix 값으로 환경 변수 os.name을 추가하면 테스트 메서드 testUsingSpringTestWithCustomProfilesY가 실행됨을 의미한다.