티스토리 뷰

Web

Spring boot에서 DBUnit 사용하기

아나니리 2020. 1. 2. 23:59

사용목적

기존에는 테스트에 필요한 데이터를 data.sql로 관리

  • 테스트끼리 같은 데이터를 사용하면 테스트에 실패할 수 있음
  • 테스트마다 데이터를 다른 데이터를 사용해도 되지만 관리가 어려워짐

DBUnit을 적용하면...

  • 테스트 실행 전, 후에 작성한 xml로 디비의 데이터를 변경(데이터 변경을 신경 쓰지 않아도 됨)

문제점

의존성

testImplementation 'org.dbunit:dbunit:2.6.0'
testImplementation 'com.github.springtestdbunit:spring-test-dbunit:1.3.0'

Bean 등록

@Configuration
public class TestConfig {

    @Bean
    public DatabaseConfigBean dbUnitDatabaseConfig() {
        DatabaseConfigBean config = new DatabaseConfigBean();
        config.setAllowEmptyFields(true);
        config.setDatatypeFactory(new H2DataTypeFactory());
        return config;
    }

    @Bean
    public DatabaseDataSourceConnectionFactoryBean dbUnitDatabaseConnection(DataSource dataSource) {
        DatabaseDataSourceConnectionFactoryBean dbUnitDatabaseConnection = new DatabaseDataSourceConnectionFactoryBean();
        dbUnitDatabaseConnection.setDataSource(dataSource);
        dbUnitDatabaseConnection.setDatabaseConfig(dbUnitDatabaseConfig());
        return dbUnitDatabaseConnection;
    }
}

DBUnit 사용하기

@Import(TestConfig.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@TestExecutionListeners({
        DbUnitTestExecutionListener.class,
        DependencyInjectionTestExecutionListener.class
})
@DbUnitConfiguration(databaseConnection = "dbUnitDatabaseConnection")
@DatabaseSetup(value = {"user.xml"}, type = DatabaseOperation.CLEAN_INSERT)
@DatabaseTearDown(value = {"user.xml"}, type = DatabaseOperation.DELETE_ALL)
public class DBUnitTest {

예제 코드


출처
http://woowabros.github.io/experience/2019/11/06/db-unit.html

'Web' 카테고리의 다른 글

웹 앱에 Kakao 지도 API 사용하기  (0) 2020.01.07
Json Web Token  (0) 2019.12.29
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함