통합 테스트를위한 트리거가있는 메모리 데이터베이스에서 JDBC를 초기화 하시겠습니까?

StackOverflow https://stackoverflow.com//questions/25086115

문제

현재 우리는 모든 통합 테스트에 대해 하나의 데이터베이스 인스턴스가 있습니다. Oracle 데이터베이스 스키마는 DDL의 무리에 동기화됩니다. 그런 다음 DBUNIT를 사용하여 테스트 간 테이블을 채우고 자릅니다. 이 접근 방식에는 두 가지 문제가 있습니다 :

  1. 데이터베이스를 준비하는 데 소요 된 시간은
  2. 에 소비 된 테스트 이상입니다.
  3. 때때로, 일반적으로 테스트 실패, 테스트 데이터가 후속 테스트로 흘러 나와 더 많은 실패가 발생합니다.
  4. 테스트 당 메모리 내 데이터베이스 (예 : H2)를 생성하여 테스트를 격리하고 싶습니다. DDL을 생성하기 위해 EclipseLink 구성을 계획합니다 (Oracle DDL을 다른 항목으로 변환하는 데있어 내가 상상할 때까지는 악몽이 될 것입니다). 그 지점에서의 유일한 문제는 트리거를 생성하는 것입니다.

    두 가지 질문이 있습니다 ...

    1. 기존 Oracle 스키마의 메모리 내 데이터베이스 (H2 또는 뭐든지)를 생성 할 수 있으며 트리거가 포함되어 있습니까?
    2. 또는 My EntityManager (DDL 생성)를 사용하여 메모리 데이터베이스를 만들고 즉시 트리거 한 번을 만들 수 있지만 테스트 실행 전에?
    3. 기술 스택 :

      • 봄 : 3.2.8
      • 스프링 데이터 JPA : 1.5.3
      • 이클립스 링크 : 2.5.1
      • 오라클 : 11

      스프링 테스트 통합 환경을 인스턴스화하는 방법에 익숙해 져야 메모리 데이터베이스를로드합니다. 오라클 물건을 어떻게 번역 할 수 있는지 모르겠습니다 (트리거, 특히)

도움이 되었습니까?

해결책

기존 Oracle 스키마의 메모리 내 데이터베이스 (H2 또는 뭐든지)를 생성 할 수 있으며 트리거가 포함됩니까?

예,이를 가질 수 있습니다. 우리는 메모리 내 데이터베이스에 대한 모든 물리적 데이터베이스 및 HSQL에 대한 Postgres를 사용합니다. Hibernate를 사용하여 엔티티 클래스에서 데이터베이스를 생성하기 위해 Hibernate를 사용하여 시작되었지만 이제는 플라이어를 사용하도록 마이그레이션되었습니다. 일부 DML과 DDL은 Oracle에 맞춤형이므로 HSQL 또는 H2를 사용자 정의해야합니다 (플라이어를 사용하기 쉽기 쉽습니다).

또는 My EntityManager (DDL 생성)를 사용하여 메모리 데이터베이스를 만들고 즉시 트리거 한 번을 만들 수 있지만 테스트 실행 전에?

메모리 내 데이터베이스를 청소 / 채우면되므로 원하는대로 데이터베이스를 누릴 수 있습니다. 여러 가지 방법이 있습니다.

  1. 플라이웨이 테스트 확장 - 이것은 쉽고 우리가 사용하는 것입니다. https://github.com/flyway/flyway-test-extensions . 테스트 프로필 @Profile ( "test")이있는 스프링 빈을 작성하고 테스트 환경에 대한 데이터를 삽입합니다.
  2. import.sql 스크립트를 사용하십시오. 나는 봄 시험 하네스가 이것을 찾을 것이라고 믿는다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top