【发布时间】:2018-11-15 14:04:45
【问题描述】:
我正在使用 cucumber + cucumber-spring 4.1 来测试 SpringBoot 2.1 应用程序。这有需要在每个场景之间回滚数据库的场景,但对于我的生活来说,它无法正常工作。
我试过了:
带有多个注释的基类
`
@Transactional
@RunWith(SpringRunner.class)
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD)
public abstract class SpringBootBaseIntegrationTest { .. } `
Stepdef 类如:
`
@ContextConfiguration(classes = {Application.class})
@Ignore
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD)
@Transactional
public class DatabaseSteps extends SpringBootBaseIntegrationTest implements En { ... }
`
使用@txn 注释功能和场景并添加'cucumber.api.spring' 胶水。
我的应用程序有:
`
@EnableJms
@EnableJpaRepositories
@EnableTransactionManagement
@SpringBootApplication
@PropertySource(ignoreResourceNotFound = false, value = "classpath:application.properties")
class Application implements CommandLineRunner { ... }
`
我使用标准的 JPA 存储库。
我的 application.properties 是:
`
spring.jpa.properties.hibernate.jdbc.time_zone=UTC
spring.datasource.initialization-mode=always
spring.jpa.hibernate.ddl-auto=create
spring.jpa.properties.hibernate.generate_statistics=false
spring.jpa.properties.hibernate.show_sql=false
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
#spring.h2.console.enabled=true
`
但无论我做什么,在任何组合中,数据仍然保留在测试之间。
任何人都可以阐明或管理工作设置吗?
干杯
【问题讨论】:
-
能否在github.com/cucumber/cucumber-jvm/blob/master/spring/src/main/… 中放一个断点,看看是否创建了类并调用了startTransaction 和rollBackTransaction?
-
这是一个工作示例顺便说一句:github.com/cucumber/cucumber-jvm/tree/master/examples/…
标签: spring spring-boot spring-data-jpa cucumber cucumber-jvm