2013-04-05 5 views
0

DBUnit 테스트에서 흥미로운 문제가 있습니다.메모리 부족 h2를 사용하는 날짜가 null 인 플랫폼 간의 dbunit 동작이 일치하지 않습니다.

우리는 DBUnit 테스트와 xml 데이터 세트로 테스트하는 코드가 있습니다. 플랫폼간에 정확히 동일한 데이터 세트와 코드 파일을 사용하여 일관성없는 테스트 결과를 얻었으므로 DB Access 클래스의 일부를 리팩터링하므로이 추적을 따르기로했습니다.

  1. 데이터 집합은 HBM 파일에 정의 된 특정 쿼리와 일치하는 3 기록이 있습니다

    내가 실행 해요 문제는 다음과 같다.

  2. 쿼리는 "DATE_FIELD desc 순서"를 수행하지만 데이터 집합의 모든 레코드가이 DATE_FIELD 집합을 갖지는 않습니다 (즉, 두 플랫폼 모두에서 동일한 스크립트의 null 또는 기본값으로 해석되어야 함을 의미) .

Maven이 테스트를 실행하는 하나의 플랫폼 (Linux-server)에서는 Windows를 사용하는 PC에서는 레코드가 다른 순서로 데이터베이스 (데이터 세트)에서 추출되므로 모두 얻을 수 있습니다. 테스트가 레코드 순서의 유효성을 검사 할 때 오류가 발생합니다.

그래서 데이터 세트를 수정하면 양면에서 녹색으로 변하는 테스트가 수행되지만 누군가가 레코드 중 하나에 날짜 열이없는 데이터 세트를 작성한 경우 일부 비즈니스 규칙에 대해 알고있을 수도 있습니다. 알고 있지 않으므로 미래의 문제가 발생할 수 있으므로 시나리오를 수정하지는 않습니다.

답변을 검색 한 후 질문을 수정합니다. 내가 찾고있는 대답, 어떻게 다른 플랫폼에서 null 날짜와 일치하도록 H2 데이터베이스를 얻으려고합니까? 쿼리를 건드리지 않고 전체 DB에 대해 NULLS FIRST 또는 LAST LAST를 설정하려면 어떤 매개 변수를 사용해야합니까?

대단히 감사합니다. 내가 대답, 더 나은 후속 좋을 텐데하지만이 지점에 도달 생각을 발견

+0

어떤 DBMS를 사용하고 있습니까? * 하나의 데이터베이스 서버를 가지고 있습니까? 아니면 두 시스템 모두에 로컬로 데이터베이스 인스턴스를 가지고 있습니까? –

+0

안녕하세요, 응용 프로그램은 일반적으로 DB2와 함께 실행되지만 DBUnit 테스트는 플랫 XML 파일의 데이터 세트로 실행됩니다. 데이터 집합 기능은 org.dbunit.dataset 패키지에서 가져옵니다. – Martin

+0

아마도 더 명확 해지기 때문에 h2 메모리 내 DBMS입니다. – Martin

답변

1

음,

나는 내 자신의 질문에 대답하고있다. 사실 "

System.setProperty를 ("h2.sortNullsHigh ": 드라이버를로드하기 전에

http://www.h2database.com/javadoc/org/h2/constant/SysProperties.html

그리고 런타임에 sortNullsHigh 속성을 설정 :

나는이 페이지의 지침을 따랐 ");

나중에 모든 중앙 장치 테스트가 jenkins/maven으로 실행되고 속성이 올바르게 설정된 후에 구성 파일로 가져올 수있는 방법을 알게 될 것입니다.

감사합니다.