我正在尝试使用以下方法调试我的spock测试,该方法曾经在Grails 2.3中使用,但在2.4.4中不再适用:
自grails 2.4以来,grails-debug脚本消失了,取而代之的是grails -debug。但是我发现-debug只有在它是第一个参数时才有效,然后它会忽略-reloading参数。虽然重新加载了对测试本身的更改,但测试使用的服务更改却没有。 所以我可以调试而无需重新加载。如果-reloading是第一个参数,那么重新加载服务有效,但我无法再调试。 所有上述内容都使用非分叉执行。
分叉执行的一个额外复杂因素是我需要将-Dvar = blah传递给我的应用程序,并且似乎没有一种机制可以使用forked exec执行此操作。所以我通过完全注释BuildConfig.groovy中的部分来禁用forked exec:
grails.reload.enabled = true
//forkConfig = [maxMemory: 1024, minMemory: 64, debug: true, maxPerm: 256]
//grails.project.fork = [
// test: forkConfig, // configure settings for the test-app JVM
// run: forkConfig, // configure settings for the run-app JVM
// war: forkConfig, // configure settings for the run-war JVM
// console: forkConfig // configure settings for the Swing console JVM
//]
并尝试过:
grails.reload.enabled = true
forkConfig = [maxMemory: 1024, minMemory: 64, debug: true, maxPerm: 256]
grails.project.fork = [
test: false, // configure settings for the test-app JVM
run: false, // configure settings for the run-app JVM
war: false, // configure settings for the run-war JVM
console: false // configure settings for the Swing console JVM
]
在这两种情况下,我都可以同时调试测试并让它们重新加载服务。
我的问题是:使用Grails 2.4.4和Intellij ultimate 13.1.5如何同时完成以下所有操作:
(我很乐意使用forked exec,如果解决了这个问题,那么需要一种机制将属性传递给分叉的调试会话)