2010-05-18 4 views
13

내일 DBUnit XML 데이터 세트에서 날짜를 내일로 지정하는 방법이 있는지 궁금합니다. 때로는 코드 논리가 미래의 날짜와 과거의 날짜와 다를 수 있으며 두 경우를 테스트하려고합니다. 확실히 나는 2239 년 11 월 5 일과 같은 것을 지정할 수 있으며이 날짜까지는 테스트가 작동하지만 더 우아한 방법이 있는지 확인해야합니다.DBUnit 데이터 세트의 현재 상대 날짜

자바 개발 중에 아직 그런 상황에 직면 한 적이 없지만 코드 로직이 날짜 이전, 이일 전의 이일 및 날짜보다 이틀 전에 다른 경우에 한 번 경험했습니다. 이 경우 데이터베이스 기반 테스트를 작성하는 유일한 방법은 데이터 가져 오기 중에 상대 날짜를 삽입하는 것입니다.

DBUnit에서 제공하는 기능이 있습니까?

답변

24

방금 ​​DBUnit을 사용하기 시작했고 유사한 기능을 찾고있었습니다. 불행히도 프레임 워크에서 날짜에 대한 표현 언어가없는 것 같습니다. 그러나 DBUnit의 ReplacementDataSet 클래스를 사용하여 적절한 해결 방법을 찾았습니다. 이 클래스는 IDataSet 객체를 사용하고 데이터 세트 파일에서 IDataSet 객체로 추출한 객체를 대체하는 메소드를 제공합니다.

테스트는 테스트가 실행되기 전에 항상 두 개의 일로 설정됩니다 사용자 생성 데이터를 실행하는 데이터 세트

<dataset> 
    <user first_name="Dan" 
      last_name="Smith" 
      create_date="[create_date]"/> 
<dataset> 

소스 코드를 이제

String dataSetFile = "testDataFile.xml"; 
IDataSet dataSet = new FlatXmlDataSetBuilder().build(new FileInputStream(dataSetFile)); 
ReplacementDataSet rDataSet = new ReplacementDataSet(dataSet); 
Set<String> keys = dataSetAdjustments.keySet(); 
rDataSet.addReplacementObject("[create_date]", DateUtils.addDays(new Date(), -2)); 

.

희망이 도움이됩니다. 행운을 빕니다.

+0

그런 상세한 설명을 가져 주셔서 감사합니다. 정말 유용합니다. – VestniK

+0

unitils @Dataset을 사용할 때는 어떻습니까? – mjgirl

0

add() of Calendar을 사용하여 미래의 날짜를 정의하고이를 JUnit의 데이터 소스와의 관계에서 사용할 수 있습니다. 나는 이것이 DBUnit의 XML 포맷과 함께 작동 할 것 같지 않다. DBTestCase에서 확장하고 getDataSet() 메소드를 구현하여 자신 만의 TestCase를 만들 수 있습니다.

+0

예 Java로 상대 날짜를 계산하는 방법을 알고 있습니다. 데이터 셋을 파싱하고 날짜를 수동으로 계산해야하는 것 같습니다. – VestniK