gpt4 book ai didi

grails - 如何在Spock集成测试中为每个测试类设置transactionnal选项?

转载 作者:行者123 更新时间:2023-12-02 14:11:27 24 4
gpt4 key购买 nike

在grails项目(版本2.3.7)中,我使用Spock进行了集成测试:

class SimpleIntegrationTests extends IntegrationSpec{
void "test an action from controller to database"(){...}
}

该集成测试使用Spring Batch启动了一个批处理。从现有事务启动批处理时,Spring批处理不接受:
java.lang.IllegalStateException: Existing transaction detected in JobRepository. Please fix this and try again

因此,我告诉我的集成测试无需交易即可运行:
static transactional = false

这样做,测试运行成功。

但是我的项目中还有其他集成测试,这些测试需要事务才能正确运行。
我的测试类中的指令“transactionnal = false”并不局限于该测试类,而是会影响在我的测试类之后触发的所有其他集成测试。

我知道测试按字母顺序执行。所以我知道,如果我将测试类重命名为要运行的最后一个测试类,则它可以正常运行,并且我所有的测试都成功。但是我认为这不是解决问题的理想方法。

所以我的问题是:如何以不影响其他集成测试的方式定义测试类不是事务类的?

最佳答案

我知道这是一个古老的问题,并且我想您已经找到了解决方案,但是作为变通办法,我认为您需要在仍然希望进行事务处理的集成测试中显式指定static transactional = true。我们的Grails 2.3.7测试套件存在类似的问题...

关于grails - 如何在Spock集成测试中为每个测试类设置transactionnal选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25310127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com