为了单独运行我的所有测试,我想在每次调用测试方法时删除并重新创建一个 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 的 Spring Data (1.0.1.RELEASE) 的源我看到 MongoPersistentEntityIndexCreator 类正在读取 POJO 注释并确保集合的索引。此类仅在 MongoTemplate 构造函数中调用。
你认为我能找到一种更好的方法来模拟我的测试中的回滚事务吗?
谢谢,卡罗