2013-10-10 2 views
2

JPA 매핑 및 기타 환경과 관련된 환경 (Dev, Test, Qa 등)마다 데이터베이스가 정상 상태에 있다는 것을 포함하여 여러 가지를 검증하는 데 사용하는 통합 테스트 세트가 있습니다 데이터 종속 항목.AbstractTransactionalJUnit4SpringContextTests의 스프링 프로필

우리는 스프링 프로파일을 통해 어떤 데이터베이스와 다른 환경에 연결되는지를 설정합니다. 이것은 자동 빌드에서 훌륭하게 작동합니다. 환경 변수 "spring.profiles.active"를 우리가 속한 환경으로 설정하고, 통합 테스트를 실행하며, 구성 오류 및 간과 할 수있는 다른 것들을 쉽게 찾을 수 있습니다.

그러나 내가 원했던 것은 통합 테스트 스위트에서 spring.profiles.default 특성을 "dev"로 설정하는 것이기 때문에 개발자가 IDE에서 실행하면 오류 메시지가 표시되지 않습니다. 프로파일이 설정되지 않았 음을 나타냅니다. 우리는 실제 배포를 위해 web.xml에서이 작업을 수행하지만, 알고 싶습니다.이를 수행하기 위해 AbstractTransactionalJUnit4SpringContextTests (또는 다른 곳)에 어떻게 연결할 수 있습니까?

답변

0

이 방법이 아닌 것 같아서 Intellij의 junit에 대한 기본 실행 config에서 환경 변수 spring.profiles.active를 "dev"로 설정했습니다.

0

내 머리 꼭대기에서 AbstractTransactionalJUnit4SpringContextTests을 사용하고 있습니다. 즉, ConfigurableApplicationContext의 인스턴스에 액세스 할 수 있습니다. 나는 당신이 말할 수 있다고 믿습니다 :

class BaseTest extends ATJ4SCT { 

    @Autowired 
    ConfigurableApplicationContext context; 

    @Before 
    public void setUp() { 
    ConfigurableEnvironment env = context.getEnvironment(); 
    env.setDefaultProfiles("dev"); 
    // not sure but if necessary 
    context.refresh(); 

    } 

} 

참조 : ConfigurableEnvironment#setDefaultProfiles(String...).

다른 주제 일지는 모르겠지만 this question을 살펴볼 가치가 있습니다.

+0

예 .... 전 \\ @에 대해 생각했습니다.하지만 모든 테스트에 있어야합니다. 아니면 다른 레이어를 추가하고, 거기에 \\ @를 추가 한 다음 확장해야합니다. \ @ 상속 테스트에서 예상했던대로 실행됩니다.) "좋은"것은 AbstractTransactionalJUnit4SpringContextTests가 컨텍스트를 초기화하기 전에 물건을 설정하기위한 일종의 훅을 가지고있는 경우입니다. 일종의 "이봐, 여기 서블릿 컨테이너에있는 척하는 기회가있어."설정. –

관련 문제