MySQL 열거 데이터 유형으로 dbunit을 잘 플레이하도록하려면 어떻게해야합니까?

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

  •  22-08-2019
  •  | 
  •  

문제

사용하려고합니다 DBUNIT 데이터베이스 액세스 코드를 테스트하기 위해 문제가 발생합니다. 우리는 사용 중입니다 MySQL 5 데이터베이스 자체와 같은 또는 기타. 작은 데이터 세트를 a로 내 보냈습니다 flatxmldataset 그리고 테스트 케이스를 설정하면 "열 1 행에서 'fheight_flag'열을 위해 자르기 한 데이터가 표시됩니다. 열 fheight_flag 열은 다음과 같이 정의됩니다

enum('t','f') default NULL

방법 열거적 데이터 소스의 실제 값이 사실이 아닌 경우 데이터가 데이터베이스에 삽입됩니다. 열에 실제로 ""(빈 문자열)가 포함됩니다. 데이터베이스를 사용하는 코드는 데이터베이스에서 제공된 값이 'T'가 아닌 경우 거짓이어야한다는 가정을 제시합니다. 이걸 어떻게 만들 수 있니? 소스 데이터를 수정할 수 없으므로 테스트 케이스로 무언가를하려고 노력해야합니다.

도움이 되었습니까?

해결책

새로운 데이터 세트를 사용하여 사용합니다 "select case when FHEIGHT_FLAG = 't' then 't' else 'f' end as FHEIGHT_FLAG, ....(all other columns) .... from tablename";

(물론 실제 테이블에있는 것처럼 열을 주문하십시오.)

final String select = "select case when FHEIGHT_FLAG = 't' then 't' else 'f' end as FHEIGHT_FLAG, ....(all other columns) .... from tablename";
// database connection
Class driverClass = Class.forName("package.of.jdbcDriver");
Connection jdbcConnection = DriverManager.getConnection(
        "jdbc:url:of:db", "user", "pass");
IDatabaseConnection connection = new DatabaseConnection(jdbcConnection);

// partial database export
QueryDataSet partialDataSet = new QueryDataSet(connection);
partialDataSet.addTable("Tablename", select);

FlatXmlDataSet.write(partialDataSet, new FileOutputStream("mydataset.xml"));

다른 팁

테스트 데이터베이스 수정 FHEIGHT_FLAG 열을 수정했습니다.

enum('','t','f') default NULL

이렇게하면 모든 빈 문자열 값이 다시 삽입 될 수있었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top