我正在使用intellij中的Cucumber JVM(Groovy)开发黄瓜场景。事情要比在日食中做同样的事情要好得多。
我想解决一个小问题,让我的团队做得更好。但由于我是Intellij的新手,所以我需要以下帮助:
答案 0 :(得分:0)
IntelliJ IDEA希望World封闭中包含一个对象。因此,您可以在每个步骤定义文件中定义以下块:
World {
new MockedTestWorld()
}
MockedTestWorld.groovy:
class MockedTestWorld implements TestWorld {
@Lazy
@Delegate
@SuppressWarnings("GroovyAssignabilityCheck")
private TestWorld delegate = {
throw new UnsupportedOperationException("" +
"Test world mock is used ONLY for syntax highlighting in IDE" +
" and must be overridden by concrete 'InitSteps.groovy' implementation.")
}()
}
为清除重复的世界定义,我们使用了上胶初始化程序和一些复制粘贴:
real / InitSteps.groovy
def world
GroovyBackend.instance.@worldClosures.clear()
GroovyBackend.instance.registerWorld {
return world ?: (world = new RealTestWorld1()) // Actual initialization is much longer
}
legacy / InitSteps.groovy
def world
GroovyBackend.instance.@worldClosures.clear()
GroovyBackend.instance.registerWorld {
return world ?: (world = new LegacyTestWorld1())
}
最后,运行配置如下(使用不同的胶水):
// Real setup
glue = { "classpath:test/steps", "classpath:test/real", },
// Legacy setup
glue = { "classpath:test/steps", "classpath:test/legacy", },