나는 Spring과 함께 개발 된 웹 애플리케이션 인 Selenium을 테스트하여 웹 애플리케이션이 사용자에게 적합한 것을 보여주고 사양에있는 모든 것을 할 수 있는지 확인한다.통합 테스트를 위해 다른 Spring 속성 사용하기
다른 개발자들은 단위 테스트를 위해 HSQLDB (memory in hibernate) 데이터베이스를 사용하고 있습니다. 테스트를 위해 프로그램에서 사용한 실제 DB를 사용해야합니다. Spring 애플리케이션 컨텍스트에 대한 JDBC 매개 변수는 Spring에서 런타임에로드되거나 WAR 파일을 빌드 할 때 컴파일 타임에로드됩니다. org.springframework.beans.factory.config.PropertyPlaceholderConfigurer가 webapp와 테스트에 대한 애플리케이션 컨텍스트를 구성하는 데 사용하는 스프링 사용 속성과 XML 구성 파일은 테스트와 webapp에서 공유됩니다.
속성은 Maven 프로필, 단위 테스트 또는 통합 테스트에 따라 달라질 필요가 있습니다.
내가 성공하지 않고, 여러 가지 방법을 시도 :- 내 자신의 DAO의 사용 낮은 수준의 SQL 쿼리를 개발하고 있습니다. 최후의 수단의 시간 낭비와 해결책입니다. 외래 키 제약 조건 및 데이터베이스 모델 변경으로 인해 응용 프로그램에 DAO 세트가 단단한 (단위 테스트 된) 세트가 있다는 점을 고려할 때 실제로는 가장 멍청한 옵션입니다.
- Maven 필터를 사용하고 거기에 JDBC 속성을 정의하십시오. 문제는 tomcat : redeploy 목표에 단위 테스트가 포함되어 있기 때문에 속성이 주 응용 프로그램과 단위 테스트간에 공유된다는 것입니다. 그러면 응용 프로그램이 실제 DB에 연결할 수 없습니다.
- 다른 폴더에 다른 속성이 있습니다. Spring은 프로파일의 Surefire 구성에 정의 된 추가 리소스에 대해 전혀 신경 쓰지 않는다. testResources 또는 리소스. 이상한 점은이 접근법이 주 앱의 각 환경에 대해 서로 다른 JDBC 매개 변수를 가지고 완벽하게 작동한다는 것입니다. 우리는 src/main/resources에 몇개의 폴더를 가지고 있는데 src/main/resources의 기본 속성을 오버라이드하는 속성들을 포함하고 있습니다. 그것은 단지 src/test/resources에 대해 같은 방식으로 작동하지 않습니다. 나는이 행동의 원인을 어떻게 찾을 수 있었는지조차 모른다.
- 은 사용자 정의 Maven 매개 변수를 기반으로 다른 속성 파일을로드합니다. 동일한 속성이 기본 앱 및 단위 테스트에 사용됩니다. Spring은 속성 파일을 찾을 수 없을 때도 불평합니다. (빌드를 완료하기 위해 빈 파일이있는 디렉토리를 만들어야합니다.)
개발자 프로필 (개발자, 테스트 서버 ...)이 현재 빌드 구성이고 테스트 프로필 (단위 테스트)이 동시에 실행되고 속성이 서로 무시되지 않는 이유는 무엇입니까? Maven은 단위 테스트가 시작될 때 src/test/resources를보고, 빌드 목표가 시작될 때 src/main/resources를 봄으로 만들 것입니다. 불행히도 이와 같은 통합 테스트에는 기본 구성이 없습니다.
글쎄, 나는 (또는 오히려 내 동료) 이런 식으로 일을 끝냈다. –