사용자 도구

사이트 도구


springframework:spring_test_dbunit

차이

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

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
springframework:spring_test_dbunit [2016/09/28 12:48]
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 지원 기본 설정 ======+===== MySQL Multiple Schema 지원 기본 설정 =====
 <code java> <code java>
 @Bean @Bean
줄 9: 줄 11:
     DatabaseConfigBean config = new DatabaseConfigBean();     DatabaseConfigBean config = new DatabaseConfigBean();
     config.setQualifiedTableNames(true); // schema 지원     config.setQualifiedTableNames(true); // schema 지원
-    config.setMetadataHandler(new MySqlMetadataHandler());+    config.setMetadataHandler(new MySqlMetadataHandler()); // MySQL 에서 MetaData를 올바로 읽으려면 필요 
 +    config.setDatatypeFactory(new MySqlDataTypeFactory());
     return config;     return config;
 } }
줄 24: 줄 27:
 <code java> <code java>
 // 실제 테스트에서는 // 실제 테스트에서는
-@DatabaseSetups([ +// Spring Application 기본 설정... 이후 
- @DatabaseSetup(value = "dataset.xml", type = DatabaseOperation.TRUNCATE_TABLE), +@TestExecutionListeners({DependencyInjectionTestExecutionListener.class, 
- @DatabaseSetup(value = "dataset.xml", type = DatabaseOperation.CLEAN_INSERT) +    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") @DbUnitConfiguration(databaseConnection = "dbUnitDatabaseConnection")
 public class DatabaseTest { public class DatabaseTest {
줄 33: 줄 41:
 } }
 </code> </code>
 +
 +''@DatabaseSetup''에서 테스트 클래스와 다른 패키지에 있는 파일을 로딩하려면 ''/package/path/to/dataset.xml'' 형태로 전체 패키지를 기술해주면 된다.
  
 FlatXML 에서는 ''schemaName.tableName'' 형태로 기입해줘야한다. FlatXML 에서는 ''schemaName.tableName'' 형태로 기입해줘야한다.
줄 42: 줄 52:
 </code> </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.1475036291.txt.gz · 마지막으로 수정됨: 2016/09/28 12:48 저자 kwon37xi