用于个别测试的spils单元测试在intellij中不起作用

时间:2016-05-11 02:51:53

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

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

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

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

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

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

使用grails runner,我检查配置,这是截图: enter image description here

那里的命令没什么错。

但是运行测试会导致Test framework quit unexpectedly错误。

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

但是在检查输出html文件时(在目标/测试报告中),我发现没有任何测试实际运行过!

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

PS:

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

2 个答案:

答案 0 :(得分:1)

为Spock的测试命名付出的部分代价是,您无法指定单独的测试运行。

以下是一些关于它的文章。第一个似乎非常重要: Run a specific test in a single test class with Spock and Maven

这个不是关于运行单个测试,而是关于Spock的测试名称转换有一些相关性和讨论,还有Peter Niederwieser的评论: Can TestNG see my Spock (JUnit) test results?

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

答案 1 :(得分:0)

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

-Dgrails.env =开发

当我们将运行环境更改为开发时,这将运行测试。希望这将有助于每个人面临这样的问题。