【问题标题】:Spock unit tests in grails for individual test does not work in intellij用于单个测试的 grails 中的 Spock 单元测试在 intellij 中不起作用
【发布时间】:2016-05-11 02:51:52
【问题描述】:

我正在尝试使用 intellij idea 运行单个 spock 单元测试。

考虑: // rest of code def "Test Something"() { // test code below }

在上面的测试中,当我进入测试主体和右侧上下文菜单时,我得到了Test Something 的两种测试。一个是grails测试,一个是junit测试。

参考this 问题,接受的答案建议使用jUnit runner。但是使用它,代码根本无法编译(可能是因为某些插件和其他类不可用)。

(我不确定,因为这是所需的行为,因为我只是运行 single 测试而不是所有测试。所以想知道为什么它编译所有类,包括不需要的插件类测试目标类。)

使用 grails runner,我检查了配置,下面是屏幕截图:

所以那里的命令看起来没什么问题。

但是运行测试给出Test framework quit unexpectedly错误。

我尝试从 grails 控制台(CMD 窗口)运行相同的命令,它运行时没有任何错误消息。

但在检查输出 html 文件时(在 target/test-reports 中),我发现实际上没有任何测试运行!

那么这里发生了什么,为什么没有单独的测试运行?

PS:

当我使用test-app 命令运行所有测试时,测试按预期运行。只有个别(单元)测试没有运行。

【问题讨论】:

  • 嗯...什么 grails 版本、Intellij 版本等?我一直在 IntelliJ 2016.1、Grails 2.4.5 中运行 Spock 单元测试。右键单击测试方法,然后选择运行 Grails 版本。测试配置的格式看起来和你的一样。
  • 我只在测试名称上使用引号。休息对我来说很好。
  • @railsdog 我在 intellij 15.0 上。我认为这种相同的配置过去一直对我有用。但现在它根本不适用于此应用程序中的任何测试!对我来说似乎是一个奇怪的问题。此外,由于 grails cmd 也没有运行单独的测试,因此问题可能出在 grails 或我的代码本身的某个地方!
  • @Mamun 默认来自 intellij。

标签: java unit-testing grails intellij-idea spock


【解决方案1】:

为 Spock 漂亮的测试命名付出的部分代价是,您不能再指定要运行的单个测试。

这里有一些关于它的文章。第一个似乎很正确: Run a specific test in a single test class with Spock and Maven

这篇文章不是关于运行单个测试,而是有一些相关性并讨论了 Spock 的测试名称转换,另外还有 Peter Niederwieser 与 cmets 的对话: Can TestNG see my Spock (JUnit) test results?

解决方法可能是@IgnoreRest 注释。只需使用@IgnoreRest 注释您要运行的测试,然后指定要运行的测试类,只有带注释的测试会运行。 http://spockframework.github.io/spock/javadoc/1.0/spock/lang/IgnoreRest.html

【讨论】:

    【解决方案2】:

    尝试使用 grails 单元测试并在命令行部分添加以下内容:

    -Dgrails.env=development

    这将在我们将运行环境更改为 development 时运行测试。希望这对面临此类问题的每个人都有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-21
      • 2016-06-17
      • 2017-01-06
      • 1970-01-01
      • 1970-01-01
      • 2015-10-12
      相关资源
      最近更新 更多