【问题标题】:How to use Spock from the Command Line如何从命令行使用 Spock
【发布时间】:2016-09-18 22:44:52
【问题描述】:

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

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。我想不出直接调用 Sputnik 的正确方法。有什么想法吗?

【问题讨论】:

  • 在 GitHub 上查看此示例:gist.github.com/ysb33r/5825457
  • @BalRog,我查看了您的示例,这是一个开始,但上面缺少的是自动查找和执行所有规范的能力。

标签: groovy junit spock


【解决方案1】:

即使您提出的问题是可行的,并且 BalRog 已经提出了解决方案,但从长远来看,最好使用 Gradle 或 Maven 从命令行运行测试。

您将遇到的所有 Jenkins 教程都将讨论 Maven 和/或 Gradle,因此使用构建系统比使用自定义脚本更有意义。

【讨论】:

  • 我想我可以弄清楚如何使用 Maven 或 Gradle 做到这一点,但我不知道为什么要这样做。拉动这样的系统有什么附加值。我没有太多使用 Gradle,但我知道 Maven 的重量并不轻。为了运行一些测试,我需要下载多少世界?
  • 如果您使用 Gradle 或 Maven,他们将下载的唯一库是 Spock(以及您的应用程序使用的任何其他库)。 Gradle 附带一个 Gradle 运行器,它也可以自行下载。
  • “这样的系统”。 Maven 和 Gradle 都是专门为您的目的而设计的构建系统。你会在没有 make 的情况下编写一个大的 C 项目吗?你会写一个没有 Msbuild 的大型 C# 项目吗?你会写一个没有 node.js 和量角器的大型 Javascript 项目吗?
猜你喜欢
  • 1970-01-01
  • 2012-09-23
  • 2010-11-30
  • 2011-10-17
  • 2015-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-25
相关资源
最近更新 更多