스프링 데이터 JPA 및 Spring-Data-Mongo 리포지토리 (각 클래스에는 하나의 리포지토리에 대한 테스트 만 포함)에 대한 JUnit 테스트를 만들고 있습니다. 각 테스트를 위해 내가 깨끗한 데이터베이스를 얻을 수 있도록 잘 작동 JPA (포스트 그레스 또는 H2 DB)에 대한MongoDB 용 스프링 DirtiesContext
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD)
: 각 테스트는 내가 DirtiesContext을 사용하고 실행하기 전에 데이터베이스를 정리합니다. 그러나 MongoDB에서는 제대로 작동하지 않습니다. 데이터베이스는 각 테스트 전에 다시 생성되지 않습니다. 내가 사용할 수 있습니다 알고
@Autowired
private MongoTemplate mongoTemplate;
@After
public void clearCollection() {
mongoTemplate.dropCollection(DocHeader.class);
}
그러나 나는 그것이 몽고에 대한 포스트 그레스 또는 H2 작동하지만 이유를 이해하고자합니다.
답변 해 주셔서 감사합니다. 이제 PostgreSQL에서 왜 작동하는지에 대한 질문입니다. 컨텍스트가 dirty로 표시되면 PostgreSQL 데이터베이스 데이터가 새로 고쳐집니다. 그래서 Mongo와 똑같은 방식으로 작동합니다. 그러나 Mongo의 경우 작동하지 않습니다. 왜 그런지 알아? – Adam
응용 프로그램 속성에서 spring.jpa.hibernate.ddl-auto = create-drop을 사용하고 있기 때문에 Postgres에서 작동한다고 가정합니다. 이 모드를 업데이트하도록 변경하면 DirtyiesContext가 설정되어 있어도 데이터가 제거되지 않고 스키마가 재생성되지 않습니다. 지금 나는 Mongo와 비슷한 옵션이 있다고 생각하고 있는가? – Adam