Android Studio 3无法在Spock中运行测试

7
我将Android Studio更新到3版本之后,所有位于Java模块中的Spock测试在尝试从应用程序内运行时(右键单击Groovy文件夹->运行“Groovy中的测试”)都无法运行。我收到以下错误提示: “找不到类:package.name.classname”空测试套件。” 如果我尝试运行单个测试,也会出现相同的情况。 如果我从Gradle面板运行test任务,则会出现以下错误:error. Cause: unknown.
另一方面:
  • 任何安卓模块中的Spock测试都能够正常运行。
  • 我所有模块中的Java测试都能够正常运行。
  • 当使用Gradle (gradlew clean test) 在AS之外运行时,所有测试(包括Spock和Java)都能够正常运行。

我的设置:


在谷歌和这里搜索后,我尝试了以下几件事情:

  • 将Android Gradle插件更改回v2.3.3,Gradle更改为v3.3
  • 尝试将所有Groovy类复制到build/classes/java/test中

只是想澄清一下,你的 Spock 测试文件在 src/test/groovy 还是 src/test/java 目录下? - Leonard Brünings
src/test/groovy - le0nidas
1
我在谷歌问题跟踪器中发现了这个问题,其中包含一个临时解决方法。我尝试了它,它对我也起作用,导致与报告者相同的问题:类已经存在 - le0nidas
@le0nidas 尝试使用此修复方法,可以解决问题并避免“类已存在”的问题。尝试将以下内容添加到 build.gradle 文件中:sourceSets { test { groovy { // Workaround for issue https://issuetracker.google.com/issues/65712492 // regarding to "Class not found .... Empty test suite" issue outputDir = sourceSets.test.java.outputDir } } }是的,该线程中的最后一条评论是我发表的。 - Herman Cheung
@thinkpanda,那个很好用。谢谢你。 - le0nidas
显示剩余2条评论
1个回答

3

这更像是一种解决方法而不是真正的解决方案,但它应该可以让您重新获得调试器,而这可能是价值的90%:

您可以像下面这样运行测试套件:

./gradlew <module>:test --debug-jvm

当运行测试的jvm挂起时,需要等待调试器附加。

从Android Studio中通过按下ctrl + shift + a(在Linux上)来打开操作选择器,并选择:

附加到本地进程...

一旦Android Studio附加了测试,测试将开始运行。

--debug-jvm标志可以与--tests一起使用来调试单个测试:

./gradlew <module>:test --tests fully.qualified.test.Test --debug-jvm

1
在Mac上,按下cmd + shift + a - QuirijnGB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接