사용자 도구

사이트 도구


springframework:spring_test_dbunit

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
springframework:spring_test_dbunit [2015/10/30 10:15]
kwon37xi
springframework:spring_test_dbunit [2020/07/08 14:04] (현재)
kwon37xi
줄 1: 줄 1:
 ====== Spring Test DBUnit ====== ====== Spring Test DBUnit ======
-  * [[http://springtestdbunit.github.io/spring-test-dbunit/|Spring Test DBUnit]]+  * [[https://github.com/ppodgorsek/spring-test-dbunit|ppodgorsek/spring-test-dbunit]] : 새로운 포크 
 +  * [[http://springtestdbunit.github.io/spring-test-dbunit/|Spring Test DBUnit]] : 더이상 유지 안됨. 
 +  * [[java:junit:database_rider|database-rider]] 사용 권장.
   * [[java:junit:dbunit|DBUnit]]과 Spring을 쉽게 연동할 수 있게 해준다.   * [[java:junit:dbunit|DBUnit]]과 Spring을 쉽게 연동할 수 있게 해준다.
  
 +===== MySQL Multiple Schema 지원 기본 설정 =====
 +<code java>
 +@Bean
 +public DatabaseConfigBean dbUnitDatabaseConfig() {
 +    DatabaseConfigBean config = new DatabaseConfigBean();
 +    config.setQualifiedTableNames(true); // schema 지원
 +    config.setMetadataHandler(new MySqlMetadataHandler()); // MySQL 에서 MetaData를 올바로 읽으려면 필요
 +    config.setDatatypeFactory(new MySqlDataTypeFactory());
 +    return config;
 +}
  
 +@Bean
 +public DatabaseDataSourceConnectionFactoryBean dbUnitDatabaseConnection(DataSource dataSource) {
 +    final DatabaseDataSourceConnectionFactoryBean dbUnitDatabaseConnection = 
 +        new DatabaseDataSourceConnectionFactoryBean();
 +    dbUnitDatabaseConnection.setDataSource(dataSource);
 +    dbUnitDatabaseConnection.setDatabaseConfig(dbUnitDatabaseConfig())
 +    return dbUnitDatabaseConnection;
 +}
 +</code>
 +<code java>
 +// 실제 테스트에서는
 +// Spring Application 기본 설정... 이후
 +@TestExecutionListeners({DependencyInjectionTestExecutionListener.class,
 +    DirtiesContextTestExecutionListener.class,
 +    TransactionalTestExecutionListener.class,
 +    DbUnitTestExecutionListener.class})
 +@DatabaseSetups({
 +    @DatabaseSetup(value = "dataset.xml", type = DatabaseOperation.TRUNCATE_TABLE),
 +    @DatabaseSetup(value = "dataset.xml", type = DatabaseOperation.CLEAN_INSERT)
 +})
 +@DbUnitConfiguration(databaseConnection = "dbUnitDatabaseConnection")
 +public class DatabaseTest {
 +...
 +}
 +</code>
 +
 +''@DatabaseSetup''에서 테스트 클래스와 다른 패키지에 있는 파일을 로딩하려면 ''/package/path/to/dataset.xml'' 형태로 전체 패키지를 기술해주면 된다.
 +
 +FlatXML 에서는 ''schemaName.tableName'' 형태로 기입해줘야한다.
 +<code xml>
 +<?xml version="1.0" encoding="UTF-8"?>
 +<dataset>
 + <myschema.article id="123" title="hello" regDttm="2016-09-28 09:20:22.000000" />
 +</dataset>
 +</code>
 +
 +===== MS SQLServer =====
 +  * multiple catalog 지원이 제대로 안됨.
 +  * test context 에 대해서는 ''DatabaseDataSourceConnectionFactoryBean''을 카탈로그 별로 따로 따로 생성해서 처리할 필요가 있어보임.
 +  * 다중 설정<code java>
 +@DatabaseSetups({
 +    @DatabaseSetup(value = "insert.xml")
 +    @DatabaseSetup(connection="customerDataSource", value="insert-custs.xml", type = DatabaseOperation.CLEAN_INSERT)
 +})
 +</code>
 +  * Insert Operation의 경우 ''org.dbunit.ext.mssql.InsertIdentityOperation''의 ''INSERT'', ''CLEAN_INSERT'' 등을 사용해야 한다. 이를 위한 설정은 ''databaseOperationLookup=MicrosoftSqlDatabaseOperationLookup''을 지정해주는 것이다.<code java>
 +@DbUnitConfiguration(databaseConnection = ["dbUnitDatabaseConnection"], databaseOperationLookup = MicrosoftSqlDatabaseOperationLookup)
 +class MyRepositoryTest extends Specification {
 +    ...
 +}
 +</code>
 +
 +===== 참조 =====
 +  * https://github.com/anyjava/spring-boot-dbunit
 +  * [[http://woowabros.github.io/experience/2019/11/06/db-unit.html|스프링부트에서 DbUnit 을 이용하여 DB 테스트 해보기 - 우아한형제들 기술 블로그]]
springframework/spring_test_dbunit.1446169507.txt.gz · 마지막으로 수정됨: 2015/10/30 10:15 저자 kwon37xi