Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在Android Studio中使用调试器运行Robolectric单元测试_Android_Unit Testing_Gradle_Android Studio_Robolectric - Fatal编程技术网

无法在Android Studio中使用调试器运行Robolectric单元测试

无法在Android Studio中使用调试器运行Robolectric单元测试,android,unit-testing,gradle,android-studio,robolectric,Android,Unit Testing,Gradle,Android Studio,Robolectric,自版本0.6.1以来,我一直在Android Studio的调试器下成功运行Robolectric单元测试 现在我无法获得以下错误 ERROR: transport error 202: connect failed: Connection refused ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510) JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197)

自版本0.6.1以来,我一直在Android Studio的调试器下成功运行Robolectric单元测试

现在我无法获得以下错误

ERROR: transport error 202: connect failed: Connection refused
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:750] 
Could not write standard input into: Gradle Test Executor 1.
java.io.IOException: Broken pipe
我一直在编译设置中未选中use in-process build标志,尽管我目前使用的是AS 0.8-14,但我已经返回并尝试了0.8-11、0.8-9和0.6-1,但它们现在都不起作用。我正在使用android构建工具版本19.1.0,已经使用了一段时间,它确实可以与他们一起使用

可能是Mac OS X下的本地安全设置吗?我们将感激地接受任何援助

**更新** 我发现这个问题是由在运行单元测试任务之前运行额外的JavaExec任务引起的。gradle似乎正在为第一个任务运行JVM,并将调试参数传递给它,例如-agentlib:jdwp=transport=dt_socket,server=n,suspend=y,address=49807任务完成后JVM退出。Gradle然后运行实际的单元测试,并期望新的JVM在同一端口上侦听调试器进行连接,而调试器没有进行连接,因此连接失败


我如何防止之前的任务ormlite数据库编译任务在调试器下运行,或者强制gradle识别单元测试任务将使用新的JVM运行,从而更改单元测试的JVMARG以反映新的调试端口?

我通过将数据库编译任务改为Exec任务而不是而不是JavaExec任务。exec任务定义如下,因此数据库编译是作为一个外部java进程执行的,而不是gradle调用的进程。这防止了调试JVM被数据库编译任务“消耗”

task (taskName type: Exec) {
    def mainClass = "com.some.class"
    def classPath = "${buildDir}/intermediates/classes/${flavorName}/${buildType.name}" + ":" + configurations.databaseCompile.asPath
    commandLine "java", "-cp", classPath, mainClass, configDirName
}