如何从命令行运行Spock测试?

3
我已经查看了这个链接:https://gist.github.com/ysb33r/5825457。看起来它可以像这样运行:
groovyc *.groovy

java -cp ~/.grapes/org.spockframework/spock-core/jars/spock-core-0.7-groovy-2.0.jar:$GROOVY_HOME/embeddable/groovy-all-2.1.4.jar:$GROOVY_HOME/lib/junit-4.11.jar:$GROOVY_HOME/lib/hamcrest-core-1.3.jar:.org.junit.runner.JUnitCore ExampleSpec

我已经将所有第三方jar包添加到了CLASSPATH中,所以这些库中的所有导入都被找到了。但是我的所有自己编写的类却找不到,错误消息如下:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
LoginTest.groovy: 11: unable to resolve class com.vsi.icareos.client.home.HomePage
@ line 11, column 1.
import com.vsi.icareos.client.home.HomePage
^

LoginTest.groovy: 22: unable to resolve class LoginByPwdPage 
@ line 22, column 2.
LoginByPwdPage loginPage
^

LoginTest.groovy: 35: unable to resolve class LoginByPwdPage 
     @ line 35, column 13.
       loginPage=new LoginByPwdPage(browser,Consts.PAGE_ID)
          ^
3 errors

我认为需要使用像--sourcepath这样的选项,但我发现这个命令选项已经被弃用了,那么如何解决这个问题呢?

你有使用任何构建工具吗?一开始可能需要花费一些功夫,但从长远来看可以避免许多麻烦。我使用Gradle,还有Maven和Ant也是可选的。 - tim_yates
@tim_yates,还没有,现在我只想运行一个单独的规范。 - Alex Luya
如果您正在使用Gradle,可以通过gradle test --tests your.packages.SomeSpecificSpec来完成此操作。 - tim_yates
1个回答

2
我能够运行gist中描述的测试,但需要修改groovyc,添加-cp标志并将spock jar添加到其中。如果您的源代码在子目录中,应该使用**/*.groovy而不是*.groovy
查看您运行java命令的方式,似乎在.org.junit.runner.JUnitCore之间缺少空格。
因此,应该这样写:
java -cp ~/.grapes/org.spockframework/spock-core/jars/spock-core-0.7-groovy-2.0.jar:$GROOVY_HOME/embeddable/groovy-all-2.1.4.jar:$GROOVY_HOME/lib/junit-4.11.jar:$GROOVY_HOME/lib/hamcrest-core-1.3.jar:.org.junit.runner.JUnitCore ExampleSpec

I should be

java -cp ~/.grapes/org.spockframework/spock-core/jars/spock-core-0.7-groovy-2.0.jar:$GROOVY_HOME/embeddable/groovy-all-2.1.4.jar:$GROOVY_HOME/lib/junit-4.11.jar:$GROOVY_HOME/lib/hamcrest-core-1.3.jar:. org.junit.runner.JUnitCore ExampleSpec

请注意第二个空格。 . 是当前目录添加到类路径中。
希望这可以帮到你。

对于 Spock 2.0,应使用 JUnit5 来执行单元测试。https://junit.org/junit5/docs/current/user-guide/#launcher-api-execution - Zhang Chen

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