programing

메이븐에서 유닛 테스트를 실행하기 위한 임베디드 데이터베이스로 오라클을 사용하는 방법은 무엇입니까?

copyandpastes 2023. 7. 25. 23:24
반응형

메이븐에서 유닛 테스트를 실행하기 위한 임베디드 데이터베이스로 오라클을 사용하는 방법은 무엇입니까?

prod/test/qa 데이터베이스가 Oracle 전용인 애플리케이션이 있습니다.또한 SQL 쿼리가 Oracle 전용인 것으로 의심됩니다.안타깝게도, 이 애플리케이션은 단위 테스트에서 두 번째가 아닙니다.

따라서 특히 검색 구성 요소(테이블 생성을 포함하여 많은 Oracle 작업을 수행함)와 관련하여 유닛 테스트를 구현하고자 합니다.

일반적으로 테스트를 실행하려면 내장형 데이터베이스(예: HSQL)를 시작하고 해당 데이터베이스에서 테스트를 실행한 다음 테스트가 끝나면 페이드가 사라지도록 합니다.

이 애플리케이션의 표준화 수준에 대한 확신이 부족하기 때문에 Oracle 데이터베이스에서 테스트를 실행하고 싶습니다.따라서 테스트가 시작되면 오라클 데이터베이스를 시작하고 테스트 데이터로 채우고 테스트 종료 시 중지하고 싶습니다.제가 어떻게 그것을 놀라운 맥락에서 할 수 있을까요?

오라클을 원하는 것은 이해하지만 오라클 모드 플래그를 사용하여 h2를 사용해 볼 수도 있습니다.

jdbc:h2:~/test;MODE=Oracle

저는 대부분의 프로젝트에서 동일한 요구사항을 가지고 있으며, 이는 제가 찾은 Oracle과 가장 유사합니다.누락된 소수의 함수에 대한 별칭을 정의할 수 있습니다.

exec-maven-plugin을 사용하여 전체 오라클 인스턴스를 포함하여 Maven 수명 주기 동안 모든 응용 프로그램을 시작할 수 있습니다.그러나 여전히 빌더 등에 설치해야 하므로 솔루션이 상당히 복잡합니다.

그래서 우리가 다른 프로젝트에서 한 일은 다음과 같습니다.

  1. 고유한 빌드 이름을 Maven 속성으로 정의합니다(로컬 빌드의 경우 기본 사용자 이름으로, CI에서 다음을 통해 제공).-D예: Bamboo에서 빌드 계획 키와 번호를 포함할 수 있습니다.)
  2. 인프라의 공유 오라클 인스턴스에 연결
  3. 정의된 빌드 이름을 기반으로 새 구성표 생성
  4. DDL로 새 빈 구성표 업데이트(프로덕션에서는 Flyway를 사용하므로 이 부분은 쉽습니다)
  5. 통합 테스트 실행
  6. 통합 후 테스트 단계에서 체계 삭제(빌드를 수동으로 중지하거나 중단할 수 있으므로 오래된 체계에 대해 일종의 자동 DB 정리가 여전히 필요함)

SQL 스크립트를 실행하는 데 sql-maven-plugin을 사용할 수 있습니다.또는 플라이웨이를 사용하는 경우 플라이웨이 메이븐 플러그인.

언급URL : https://stackoverflow.com/questions/37608120/how-to-use-oracle-as-an-embedded-database-for-running-unit-tests-in-maven

반응형