gpt4 book ai didi

scala - 在sbt中定义自定义配置

转载 作者:行者123 更新时间:2023-12-04 05:52:03 27 4
gpt4 key购买 nike

我想为在集成服务器和开发环境中运行测试设置另一组选项。

让我们有这个选项:

testOptions := Seq(Tests.Filter(s => Seq("Spec", "Unit").exists(s.endsWith(_))))

如何更改 testOptions,以便仅在 test命令带有诸如 teamcity:test之类的范围前缀的情况下才应用?

我希望可以使用类似的语法来修改testOptions:
testOptions in Teamcity := ...

我也想知道,如何定义自定义范围,最好在简单的 *.sbt构建中使用,而不是在 project/*.scala构建中使用。

最佳答案

范围可以是项目,配置或任务。在这种情况下,我认为您正在寻找定义自定义配置的方法。

使用它

已经有一个称为IntegrationTest的内置配置。您可以通过以下方式在构建定义中定义它:

Defaults.itSettings

这将使用与普通测试完全不同的设置,包括测试代码(进入 src/it/scala/)和库,因此可能不是您想要的。

定义自己的配置

使用sbt 0.13,您可以在build.sbt中定义如下自定义配置:
val TeamCity = config("teamcity") extend(Test)

val root = project.in(file(".")).
configs(TeamCity).
settings(/* your stuff here */, ...)

定义团队能力:测试

现在,您必须弄清楚如何定义 teamcity:test

编辑:Mark Harrah向我指出,这里有一个文档。参见 Additional test configurations with shared sources

An alternative to adding separate sets of test sources (and compilations) is to share sources. In this approach, the sources are compiled together using the same classpath and are packaged together.



全部放在一起
val TeamCity = config("teamcity") extend(Test)

val root = project.in(file(".")).
configs(TeamCity).
settings(
name := "helloworld",
libraryDependencies ++= Seq(
"org.specs2" %% "specs2" % "2.2" % "test"
)
).
settings(inConfig(TeamCity)(Defaults.testTasks ++ Seq(
testOptions := Seq(Tests.Argument("nocolor"))
)): _*)

当您运行 teamcity:test时,Specs2输出显示为无颜色。

关于scala - 在sbt中定义自定义配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18789477/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com