통합 테스트 실행 사이의 모든 데이터베이스를 비울 수 있기를 원합니다. 내 첫 번째 생각은 @TestExecutionListeners
주석을 사용하여 등록 된 org.springframework.test.context.support.AbstractTestExecutionListener
주석을 사용하여 테스트간에 필요한 정리를 수행하는 것이 었습니다.스프링 데이터 가져 오기 MongoDB에서 인덱스 다시 만들기
afterTestMethod(TestContext testContext)
방법에서는 데이터베이스를 테스트 컨텍스트에서 가져오고 com.mongodb.DB.drop()
메서드를 사용했습니다. 이것은 관리 된 @Document
오브젝트를 처음 바인딩 할 때 Spring 데이터에 의해 자동으로 작성된 인덱스를 파괴한다는 점을 제외하고는 정상적으로 작동했습니다. 다음과 같이
는 지금 내가 컬렉션 이름을 반복하는 의지와 제거 호출하여이 문제를 해결 한 :
for (String collectionName : database.getCollectionNames()) {
if (collectionIsNotASystemCollection(collectionName)
database.getCollection(collectionName).remove(new BasicDBObject());
}
이 작동하고 원하는 결과를 얻을 -하지만 방법이 있다면 그것은 좋은 것 간단히 데이터베이스를 삭제하고 스프링 데이터에 "리 바인드"를 요청하고 필요한 인덱스를 모두 만들 때 시작한 것과 동일한 초기화를 수행 할 수 있습니다. 그게 조금 더 깨끗하고 안전하다고 느낀다.
나는 org.springframework.data.mongodb.core.mapping.MongoMappingContext
으로 놀아 보았지만, 내가 원하는 것을 할 수있는 방법이 있다면 아직 해결하지 못했다.
누구에게 가이드를 제공 할 수 있습니까?