Grails 3 + IntelliJ:运行 集成测试产生 "No GORM implementations configured. Ensure GORM has been initialized correctly"

Grails 3 + IntelliJ: Running integration tests yields "No GORM implementations configured. Ensure GORM has been initialized correctly"

我有一个普通的 Grails 3.3.2 应用程序。我可以 运行 使用 gradle test integrationTest 进行测试。但是当我尝试右键单击并 运行 测试 class 或单个测试或 IntelliJ 中的整个测试套件时,我得到:

No GORM implementations configured. Ensure GORM has been initialized correctly

当我 运行 它们作为 jUnit 测试时会发生这种情况。

如果我尝试 运行 作为 Grails 测试,我得到:

No tests found for given includes

我曾尝试清理 IntelliJ 中的构建和重置缓存,但似乎无济于事。不幸的是,我也不知道我做了什么让 Grails + IntelliJ 处于这种状态。以前可以,现在不行了,不知道有什么变化。

我找到了一个 "fix",有点像。

我在我的测试 class 中编辑了 @IntegrationTest 注释,来自:

@Integration

@Integration(applicationClass = Application.class)

现在又可以用了。

有趣的是,如果我将其改回 @Integration,它仍然有效。但是,如果我 运行 a clean,然后重新 运行,它就会停止工作。所以这里肯定有问题。

编辑:我编写了以下测试用例:

CompilerConfiguration configuration = new CompilerConfiguration()
configuration.setTolerance(1)

println new File("src/integration-test/groovy/my/package/Mytest.groovy").isFile()
// true

def source = new SourceUnit(
    new File("src/integration-test/groovy/my/package/MyTest.groovy"),
    configuration,
    null,
    new ErrorCollector(configuration))

println source
// org.codehaus.groovy.control.SourceUnit@19bbb216
println source.source
// org.codehaus.groovy.control.io.FileReaderSource@6cfac0bd
println source.source.URI
// file:/path/to/my/app/src/integration-test/groovy/my/package/MyTest.groovy
println MainClassFinder.searchMainClass(source.source.URI)
// null

applicationClass属性未设置时,AST转换@Integration运行sMainClassFinder.searchMainClass。因此,这似乎表明它出于某种原因无法根据集成测试自动为我的应用程序找到应用程序 class。再一次,我不太确定它在 运行 时实际得到的是哪个源单元,所以我的测试用例可能不现实。