如何使用 SBT Jenkins 插件运行特定测试以进行 ScalaTest 测试

Posted

技术标签:

【中文标题】如何使用 SBT Jenkins 插件运行特定测试以进行 ScalaTest 测试【英文标题】:How to run specific tests using SBT Jenkins Plugin for ScalaTest test 【发布时间】:2014-06-14 09:47:24 【问题描述】:

目前我们正在使用 IntelliJ、Scala、SBT 在本地环境中启动我们的测试。使用 SBT 命令行,我们可以指定特定的测试、套件、通配符,如下所示:

ScalaTest.org Page

如“仅测试 *RedSuite”

但是在我们的 CI Jenkins 服务器上,使用 SBT 插件,当指定这个时,它会给出一个错误。

在操作字段中,使用了以下值:

操作:编译仅测试 test.package.name

使用以下方法确实适用于所有测试:

动作:编译测试

[success] Total time: 240 s, completed Apr 28, 2014 12:29:36 PM
[error] Expected ID character
[error] Not a valid command: org (similar: export)
[error] Expected project ID
[error] Expected configuration
[error] Expected ':' (if selecting a configuration)
[error] Expected key
[error] Not a valid key: org (similar: fork, run, doc)
[error] org.company.scalatest.abc.regressionsuite
[error]    ^
Build step 'Build using sbt' changed build result to FAILURE
Build step 'Build using sbt' marked build as failure
Recording test results

有谁知道我们是否可以通过 jenkins SBT 插件传递这些参数?

【问题讨论】:

【参考方案1】:

这是一个引用问题,您的 Action 字段被解析为 3 个命令:

compile test-only org.company.scalatest.abc.regressionsuite

因为org 不是一个有效的命令,所以它会窒息。

使用compile "test-only org.company.scalatest.abc.regressionsuite" 应该可以解决这个问题。

【讨论】:

重读SBT文档后,我认为错误是使用test-only而不是testOnly。 TestOnly(带引号的参数)完全符合我们的要求,并且回去尝试 gourlaysama 的建议也有效。谢谢! @user1697841 尽可能使用testOnlytest-only 是旧语法(在 sbt 0.13 之前),testOnly 是新语法(仅在 sbt 0.13+ 中支持)。旧的仍然支持向后兼容,但总有一天会消失。

以上是关于如何使用 SBT Jenkins 插件运行特定测试以进行 ScalaTest 测试的主要内容,如果未能解决你的问题,请参考以下文章

使用 SBT 如何在运行测试之前对插件中的任务进行排序

如何将环境变量传递给 Jenkins 中的 sbt 测试构建步骤?

如何通知 SBT 使用插件的特定 scala 版本?

如何在特定命令上运行任务?

如何在jenkins构建时调用sbt环境变量

如何通知SBT使用插件的特定scala版本?