在sbt中定义自定义测试配置

时间:2013-03-14 13:47:46

标签: scala sbt

我需要在sbt中定义一个运行test的自定义测试配置,但需要一些额外的设置。我一直在四处寻找如何做到这一点,但我似乎无法做到这一点。

我想做的是:> test运行正常的测试任务,> pipelinetest与测试完全相同,只有(javaOptions += "-Dpipeline.run=run"

我已经弄清楚如何设置javaOptions进行测试,如下所示: javaOptions in test += "-Dpipeline.run=run"所以我希望能够做到的是:javaOptions in pipelinetest += "-Dpipeline.run=run"

我如何定义pipelinetest来实现这一目标?这需要成为一项新任务吗?或者这是test中的设置。我现在很新,并且对此感到很困惑,阅读文档并没有帮助,所以任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:1)

我只有部分答案,但我认为这可能是有用的信息。我只想尝试为Spark中的sbt构建做类似的事情 - 我想有办法用调试器运行测试。马克哈拉的评论指出了我正确的方向。 change I made was

lazy val TestDebug = config("testDebug") extend(Test) ... baseProject .configs(TestDebug) .settings(inConfig(TestDebug)(Defaults.testTasks): _*) .settings(Seq( javaOptions in TestDebug ++= "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005" .split(" ").toSeq))

这使我通常只调用testtestOnly等,但现在我也可以运行testDebug:testOnly ...,这将使用上面定义的额外选项。 (它可能还创建了testDebug:test等等,这些额外的选项没有用,但是很好。)

我真的不明白为什么,但让我开始工作的一个重要部分是使用inConfig(TestDebug)(Defaults.testTasks),而不是inConfig(TestDebug)(Defaults.testSettings)

在我的情况下,我遇到了麻烦,弄清楚如何(a)让它为多项目构建工作;(b)我们的构建甚至更奇怪它是基于POM文件,这使得项目定义与每个示例不同。

像往常一样,我的问题是,我发现信息看似相关,但我的构建有一些不寻常的方面,这使我无法完全解决问题;虽然看起来我需要微不足道的修改,但没有彻底的理解,很难修改这些例子。