스프링 부트의 통합 테스트를 위한 리퀴브 베이스 변경 세트를 만드는 방법은 무엇입니까?
리퀴브베이스 변경 세트별 통합 테스트를 위한 모의 데이터를 원하는데, 실제 데이터베이스에 영향을 미치지 않도록 하려면 어떻게 해야 합니까?여기서 부분적인 아이디어를 찾았는데, 스프링부츠를 사용하고 있어서 더 간단한 해결책이 있었으면 좋겠습니다.
liquibase의 context 매개 변수를 사용할 수 있습니다.예를 들어 sql 파일에서 삽입을 로드할 변경 세트를 만들고 해당 변경 세트에 대한 컨텍스트를 지정합니다.이와 같은 것:
<changeSet id="test_data_inserts" author="me" context="test">
<sqlFile path="test_data.sql" relativeToChangelogFile="true" />
</changeSet>
그리고 봄 부츠에.application.properties
테스트를 위해 속성을 지정liquibase.contexts=test
.
운영 변경 세트가 resource/db/changelog/changes 내부에 있고 /db/changelog에 db.changelog-master.yaml이 있고 다음 구성이 있다고 가정합니다.
databaseChangeLog:
- includeAll:
path: db/changelog/changes
test/resources/db/changelog/testchanges 내부에 테스트 변경 세트를 배치하고 다음 구성을 사용하여 test/resources/db/changelog에 db.changelog-master.yaml을 생성합니다.
databaseChangeLog:
- includeAll:
path: db/changelog/changes
- includeAll:
path: db/changelog/testchanges
테스트는 두 경로에 설정된 모든 변경 사항을 선택하고 실행해야 합니다.
@Krzyszof Tomaszewski의 최종 용액 사용.
테스트를 위한 애플리케이션 속성 파일은 liquibase 파일 이름을 재정의해야 합니다. 폴더 'test/messages'에 'main/messages'의 liquibase 파일을 포함해야 하며 테스트를 위한 데이터를 삽입하기 위한 일부 변경 세트를 포함할 수 있습니다.
결국 다음과 같은 구성을 하게 되었습니다.
change-log: "classpath:db/liquibase-changelog-test.xml" //(1)
search-path: "./src/test/resources,./src/main/resources" //(2)
rewrite change-log 파일 속성 (2) rewrite search-path 속성
그리고.liquibase-changelog-test.xml
다음과 같이 표시됩니다.
<include file="db/liquibase-changelog.xml"/> //changelog file in /src/main/resources (creating schema etc.)
<include file="changes/01-insert-data.xml" relativeToChangelogFile="true"/> //changes file in /src/test/resources/db, file is relative to liquibase-changelog-test.xml file (inserting data for tests)
언급URL : https://stackoverflow.com/questions/47036222/how-to-create-liquibase-changeset-for-integration-tests-in-springboot
'programing' 카테고리의 다른 글
텐서 흐름을 가져올 때 다음 오류가 발생합니다. 'numpy.core._multiarray_umath'라는 모듈이 없습니다. (0) | 2023.06.20 |
---|---|
포인터가 자신을 가리킬 수 있습니까? (0) | 2023.06.20 |
bash의 변수에서 mysql 데이터베이스 생성 (0) | 2023.06.20 |
SQL: UNION을 사용하고 특정 선택에 따라 주문하는 방법은 무엇입니까? (0) | 2023.06.20 |
ASP에서 dll.refresh 파일이란 무엇입니까?그물? (0) | 2023.06.20 |