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

Jan*_*omä 1 java groovy spring 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]
}
Run Code Online (Sandbox Code Playgroud)

现在,当我运行它时会发生什么,这个测试是用不同的"foo"值执行101次.还会发生的是,事务在每次测试后回滚.我想要的是,事务只在101次测试运行后回滚,而不是在每次测试后回滚.我当然可以在测试中编写一个循环,但如果我可以控制事务回滚的时间 - 在每次测试之后或在所有测试之后,它会更好.有没有办法控制这个或我坚持循环?

Pet*_*ser 5

通过设计,Spock将数据驱动特征方法的每次迭代视为单独的测试.spock-spring插件尊重它,并且目前无法解决它(不修改插件).