2016-09-18 45 views
1

我正在写一组groovy脚本作为Jenkins管道库的一部分。目前我使用普通的旧JUnit来测试它们,但想切换到Spock。我只需通过调用以下groovy脚本从命令行运行测试。如何从命令行使用Spock

import groovy.util.AllTestSuite 
import junit.textui.TestRunner 

System.setProperty(AllTestSuite.SYSPROP_TEST_DIR, "./tests") 
System.setProperty(AllTestSuite.SYSPROP_TEST_PATTERN, "**/*Test.groovy") 

TestRunner.run(AllTestSuite.suite()) 

我想知道什么样的等效脚本会运行Spock规范。我第一次尝试将SYSPROP_TEST_PATTERN切换为"**/*Spec.groovy。我有一个...Spec.groovy文件书面和坐在./tests下,看起来像这样:

@Grab(group='org.spockframework', module='spock-core', version='1.0-groovy-2.3') 
import spock.lang.* 

class UtilsSpec extends Specification { 

    def "Just testing"() { 

    expect: 
     1 + 1 == 2 

    } 
} 

当我调用我的Groovy脚本,虽然我得到:

了java.lang.RuntimeException:不知道如何治疗 /SourcCode/jenkins/pipeline-utils/tests/JustTestingSpec.groovy作为 JUnit测试

这是有道理的。我需要使用Sputnik,但我已经看过Spock和Sputnik源代码以及Spock示例项目,但是这些都假设您使用的是Maven或Gradle。我无法想出直接调用人造卫星的正确方法。有任何想法吗?

+0

在GitHub上看到这个例子:https://gist.github.com/ysb33r/5825457 – BalRog

+0

@BalRog,我看了你的例子,它是一个开始,但它从上面缺少的是能够自动查找并执行所有规格。 –

回答

0

即使你问什么是可能的,炎魔已经提出了一个解决方案,从长远来看,这是更好,如果你只是用摇篮或Maven从命令行运行测试。

所有詹金斯教程,你会遇到会讲Maven和/或摇篮,因此它将使使用的编译系统比自定义脚本更有意义。

+0

我想我可以弄清楚如何用Maven或Gradle来做到这一点,但我为什么要这么做却不知所措。拉动这样一个系统的附加值是多少?我没有使用Gradle,但我知道Maven几乎不会轻量级。为了运行一些测试,我需要下载多少世界? –

+0

如果您使用Gradle或Maven,他们将下载的唯一库是Spock(以及您的应用程序使用的任何其他库)。 Gradle带有一个Gradle转轮,它也下载自己。 – kazanaki

+0

“这样的系统”。 Maven和Gradle都是完全符合您需求的构建系统。你会不编写一个大的C项目吗?你会写一个没有Msbuild的大型C#项目吗?你会写一个大的Javascript项目没有node.js和量角器? – kazanaki