我正在尝试使用intellij idea运行单个spock单元测试。
考虑:
// rest of code
def "Test Something"() {
// test code below
}
在上面的测试中,当我转到测试体和右上下文菜单时,我得到Test Something
的两种测试。一个是grails测试,另一个是junit测试。
参考this问题,接受的答案建议使用jUnit跑步者。但是使用它,代码根本就不会编译(可能是因为某些插件和其他类不可用)。
(我不确定,因为这是所希望的行为,因为我只是运行单个测试而不是所有测试。所以想知道为什么要编译所有类,包括不需要的插件类测试目标类。)
那里的命令没什么错。
但是运行测试会导致Test framework quit unexpectedly
错误。
我尝试从grails控制台(CMD窗口)运行相同的命令,它运行时没有任何错误消息。
但是在检查输出html文件时(在目标/测试报告中),我发现没有任何测试实际运行过!
那么这里发生了什么,为什么没有单独的测试运行?
PS:
当我使用test-app
命令运行所有测试时,测试按预期运行。只有个别(单位)测试没有运行。
答案 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 =开发
当我们将运行环境更改为开发时,这将运行测试。希望这将有助于每个人面临这样的问题。