java - Spock-Spring - 如何控制围绕数据驱动测试的事务何时被回滚?

标签 java spring groovy spock

我将 Spock 测试框架与 Spock-Spring 扩展一起使用,它允许您使用 Springs 的 @Transactional 和 @Rollback 注释。鉴于我得到了这样的数据驱动测试:

@Transactional
@Rollback
def "Some Test"(int foo) {
  when:
  someDao.insert(foo);

  then:
  notThrown(Exception)

  where:
  foo << [0..100]
}

现在当我运行这个时会发生什么,这个测试被执行了 101 次,“foo”的值不同。还会发生的是,事务在每次测试后回滚。我想要的是事务仅在 101 次测试运行后回滚,而不是在每次测试后回滚。我当然可以在测试中编写一个循环,但如果我可以控制事务何时回滚会更好——在每次测试之后或所有测试之后。有什么方法可以控制这个,还是我会陷入循环?

最佳答案

根据设计,Spock 将数据驱动特征方法的每次迭代都视为单独的测试。 spock-spring 插件尊重这一点,目前没有办法解决它(不修改插件)。

关于java - Spock-Spring - 如何控制围绕数据驱动测试的事务何时被回滚?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14135169/

相关文章:

javascript - 将返回的 Json 响应与发布的响应进行比较

grails 向 hasErrors 添加验证错误

java - 线程中的异常 "main"java.util.IllegalFormatConversionException : d ! = java.lang.String

java - Java 中的 PropertyVetoException

java - 当 spring 上下文关闭时停止 ConcurrentTaskScheduler

java - Spring 批处理,记录跳过的记录/行

java - bean 类的属性 'maximumActive' 无效

groovy - 如何在 Groovy 中柯里化(Currying)两个闭包?

java - Axis 生成的 wsdl 不包含所有类型定义

以动态方式提供的 Java 注释值