2 回答
TA贡献1853条经验 获得超9个赞
不,使用 Spring Data 存储库创建测试数据绝对没有错。
我什至更喜欢这样,因为它通常允许更简单的重构。
与在测试中使用 JPA 一样,您需要记住 JPA 实现是后写缓存。您可能希望EntityManager
在设置测试数据后刷新和清除数据,这样您就不会从第一级缓存中获得真正应该来自数据库的任何内容。此外,这可确保数据实际写入数据库,并且会出现问题。
您可能对几篇关于使用 Hibernate 进行测试的文章感兴趣。他们不使用 Spring Data,但它可以与 Spring Data JPA 一起使用。
TA贡献1784条经验 获得超8个赞
我建议Flyway用于设置您的数据库并使用Flyway 测试扩展进行集成测试。
这样你就可以做这样的事情:
@ContextConfiguration(locations = {"/context/simple_applicationContext.xml"})
@TestExecutionListeners({DependencyInjectionTestExecutionListener.class,
FlywayTestExecutionListener.class})
@Test
@FlywayTest(locationsForMigrate = {"loadmsql"}) // execution once per class
public class MethodTest extends AbstractTestNGSpringContextTests {
@BeforeClass
@FlywayTest(locationsForMigrate = {"loadmsql"}) // execution once per class
public static void beforeClass() {
// maybe some additional things
}
@BeforeMethod
@FlywayTest(locationsForMigrate = {"loadmsql"}) // execution before each test method
public void beforeMethod() {
// maybe before every test method
}
@Test
@FlywayTest(locationsForMigrate = {"loadmsql"}) // as method annotation
public void simpleCountWithoutAny() {
// or just with an annotation above the test method where you need it
}
添加回答
举报