Чтобы выполнить все мои тесты изолированно, я хотел бы сбросить и воссоздать коллекцию 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;
}
Проверка источники Спринг данных для MongoDB (1.0.1.RELEASE) Я видел, что класс MongoPersistentEntityIndexCreator читает POJO аннотации и обеспечение индексов для полуботинки. Этот класс вызывается только внутри конструктора MongoTemplate.
Как вы думаете, я могу найти лучший способ смоделировать что-то вроде откатной транзакции в моих тестах?
Спасибо, Carlo
Спасибо. Это будет второй шаг: загрузка тестовых данных до выполнения набора тестов. Я попытаюсь добавить эти команды в свой сценарий градиента. –