2011-08-31 3 views
0

ca. 200 테이블 및 약. 20 Java 서 v/일} 처리 프로그램. 나는 꽤 좋은 통조림 시스템 테스트 모음을 가지고있다. 이러한 JUnit 테스트는 시스템 인터페이스를 통해 트랜잭션을 보내고 인터페이스를 통해 예상되는 동작을 확인한다는 블랙 박스 테스트입니다.DBUnit oracle은 주어진 테스트 후에 쓸 테이블을 결정할 수 있습니다.

나는 또한 체크 인이 컴파일 유형 검사를 트리거하는 꽤 좋은 CI 설정을 가지고 있지만이 검사를 적절한 단위 테스트 케이스로 확장하려고합니다. Unit 테스트 케이스로 나는 단일 자바 서버 또는 배치 프로그램과 데이터베이스 (모의 객체는 모호한 값)를 의미한다. 단위 테스트에서 시스템 테스트의 수표를 사용할 수 있다는 점에서 절반의 작업이 이미 완료되었지만 주된 문제는 단위 테스트 중에 데이터베이스를 알려진 상태로 만드는 방법입니다.

여기서 DBUnit을 참조하여 데이터 세트/클린 삽입 기능을 사용하는 것이 좋습니다. 내 주된 쟁점은 2 점 사이에서 어떤 테이블이 변경되었는지에 대한 목록을 얻는 방법이 있다는 것입니다. 예를 들어, 구성 요소 X에 중점을 둔 시스템 테스트 슈트를 실행합니다. 테스트 스위트 중에 삽입/삭제/업데이트 된 테이블을 확인하는 가장 쉬운 방법은 무엇입니까? 의견이 Peter

답변

0

이 정보는 Oracle 시스템 카탈로그 (또는 다른 방법)를 통해 쉽게 얻을 수 있다고 생각하지 않습니다.

제가 생각할 수있는 유일한 해결책은 DML 문의 시간을 일부 감사 테이블에 기록하는 각 테이블에 (명령문) 트리거를 만드는 것입니다. 테스트가 실행되기 전에 감사 테이블을 잘라내어 나중에 검사 할 수 있습니다.

트리거가 매우 쉽기 때문에 예를 들어 자동으로 트리거를 생성 할 수 있어야합니다. PL/SQL 블록.

1

AUDIT 또는 table monitoring 및 ALL_TAB_MODIFICATIONS를 사용할 수 있습니다. 후자는 데이터베이스 통계를 최신으로 유지하기 위해 더 많이 사용하기 때문에이 목적으로 100 % 신뢰할 수있는 것은 아닙니다. 예를 들어 롤백에 제대로 대처하지 못할 수도 있습니다.

+0

재미있게 오라클 옵션을 살펴 보겠습니다. 그러나 나는 DBUnit 기능을 사용하는 해답을 더 기대하고있었습니다. 예를 들어 SQL 내보내기를 사용하고 비교할 수 있습니다. –

관련 문제