Unit testing SBT不';t在自定义测试配置中运行任何Specs2测试
我有一个多项目,它们之间共享一些设置和自定义配置。这些设置是应按标记运行Specs2测试的配置。但是,当我运行这些新配置时,它们根本没有运行任何测试Unit testing SBT不';t在自定义测试配置中运行任何Specs2测试,unit-testing,sbt,specs2,Unit Testing,Sbt,Specs2,我有一个多项目,它们之间共享一些设置和自定义配置。这些设置是应按标记运行Specs2测试的配置。但是,当我运行这些新配置时,它们根本没有运行任何测试 import sbt.TestFrameworks.Specs2 import sbt.Tests.Argument import sbt._ import sbt.Keys._ trait Settings extends Dependencies { lazy val FunctionalTest = config("functiona
import sbt.TestFrameworks.Specs2
import sbt.Tests.Argument
import sbt._
import sbt.Keys._
trait Settings extends Dependencies {
lazy val FunctionalTest = config("functional") extend(Test)
val commonConfigs = Seq(FunctionalTest)
val commonSettings =
inConfig(FunctionalTest)(Defaults.testSettings) ++
Seq(
libraryDependencies ++= mainDeps,
libraryDependencies ++= testDeps map (_ % "test"),
testOptions in Test += Argument(Specs2, "exclude", TestTag.FunctionalTest),
testOptions in FunctionalTest += Argument(Specs2, "include", TestTag.FunctionalTest)
)
}
像这样定义functional:test
任务后,它不会运行任何测试,而test
任务将运行所有子项目中未标记为TestTag.FunctionalTest
的所有测试
移除FunctionalTest+=参数中的testOptions(Specs2,“include”,TestTag.FunctionalTest)
不会改变结果,但是移除inConfig(FunctionalTest)(Defaults.testSettings)++
makefunctional:test
的行为与test
完全相同(运行TestTag.FunctionalTest
之外的所有操作)
如何使
test
运行除TestTag.FunctionalTest
标记的测试(现在是这样)和functional:test
之外的所有测试以仅运行标记的测试?我查看了SBT和Spec2文档,但它们只有按名称筛选测试(SBT)或使用命令行参数筛选测试(Specs2)的工作示例,我找不到关于如何组合它们的信息。为了让一切都按我所希望的方式工作,我必须设置一些东西。最终解决方案如下所示:
trait Settings extends Dependencies {
lazy val FunctionalTest = config("functional") extend(Test)
val commonConfigs = Seq(FunctionalTest)
val functionalSettings =
inConfig(FunctionalTest)(Defaults.testTasks) ++
Seq(testOptions in FunctionalTest := Argument(Specs2, "include", TestTag.FunctionalTest))
val commonSettings =
++
Seq(
libraryDependencies ++= mainDeps,
libraryDependencies ++= testDeps map (_ % "test"),
testOptions in Test += Argument(Specs2, "exclude", TestTag.FunctionalTest)
)
}
用作:
project.
configs(commonConfigs).
settings(functionalSettings: _*).
settings(commonSettings: _*)
为了使其按我的预期工作,我必须解决的问题:
project.settings(allSettingsAtOnce:*)
创建了一大批设置时,一切都会崩溃。分离它们是使功能化的第一步:test
工作。它还允许我应用fix#3,因为在创建设置序列时,testOptions:=option
不可用Defaults.testSettings
替换为Defaults.testTasks
使用inConfig(FunctionalTest)(Defaults.testSettings)
未运行任何测试。任务在启动后立即成功,没有来自测试框架的任何报告testOptions替换为FunctionalTest:=options中的testOptions
在+=
中,我同时得到了排除函数性
和包含函数性
测试框架参数。我猜当我将参数附加到Test
时,它会自动传播到扩展它的所有内容,因此在派生配置中有两个相互冲突的参数。通过:=
我摆脱了不必要的参数,事情又开始了