2016-09-18 80 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