Чтобы выполнить все мои тесты изолированно, я хотел бы удалять и воссоздавать коллекцию MongoDb каждый раз, когда вызывается метод теста, читая аннотации POJO.Проблема в том, что кажется, что индексы создаются только при создании экземпляра класса MongoTemplate.
Это идеально для «нормального» приложения, но во время интеграционного тестирования я хотел бы иметь такой тест (может быть, слишкоммедленно для реальных приложений ...):
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = {
ApplicationConfig.class,
MongoConfiguration.class,
TestMongoConfiguration.class})
@ActiveProfiles("test")
public class BookServiceIntegrationTests {
private @Autowired TestHelper testHelper;
@Before
public void startup() {
testHelper.init(Book.class);
}
@After
public void cleanup() {
testHelper.drop(Book.class);
}
//test methods...
}
И это мой довольно простой класс POJO:
@Document(collection = "books")
public class Book {
@Id
private ObjectId id;
@Indexed(unique = true)
private String isbn;
private String author;
private String title;
private String genre;
private List<String> tags;
private List<Comment> comments;
}
Проверка источников данных Spring для MongoDB (1.0.1.RELEASE) Я видел, что класс MongoPersistentEntityIndexCreator читает аннотации POJO и обеспечивает индексы для коллекции.Этот класс вызывается только внутри конструктора MongoTemplate.
Как вы думаете, я смогу найти лучший способ имитировать что-то вроде отката транзакции в моих тестах?
Спасибо, Карло