scala sbt test在多个项目上运行setup和cleanup命令
发布时间:2020-12-16 18:30:55 所属栏目:安全 来源:网络整理
导读:我知道我可以通过修改testOptions在sbt中为测试阶段添加设置和清理代码,例如: val embedMongoTestSettings: Seq[Setting[_]] = Seq( testOptions in Test += Tests.Setup( () = createMongod()),testOptions in Test += Tests.Cleanup( () = destroyMongod(
我知道我可以通过修改testOptions在sbt中为测试阶段添加设置和清理代码,例如:
val embedMongoTestSettings: Seq[Setting[_]] = Seq( testOptions in Test += Tests.Setup( () => createMongod()),testOptions in Test += Tests.Cleanup( () => destroyMongod()) ) 我遇到的问题是,这是基于每个项目完成的,然后为每个项目完成一次.因此,当我设置一个多项目时,我会在这种情况下启动几个数据库(这可以工作,但这意味着我必须配置每个项目端口等). 在sbt中是否有一种方法可以确保某些步骤每个测试阶段只运行一次,无论是针对多个项目,一个项目还是一个测试用例? 我想的唯一方法是在设置和清理部分中自己管理并发,因此请保留一个全局计数器,以检查它是第一个开始还是最后一个被拆除. 解决方法
我在
sequencing tasks写了一篇博文,你可能会发现它很有用.
如果要聚合测试并确保对事物进行排序,那么快速执行此操作的方法是创建自定义命令.以下定义了一个名为sts的命令别名: lazy val commonSettings = Seq( scalaVersion := "2.11.4" ) lazy val specs2Core = "org.specs2" %% "specs2-core" % "2.4.15" val startTest = taskKey[Unit]("start test") val stopTest = taskKey[Unit]("stop test") lazy val root = (project in file(".")). aggregate(app,webapp). settings(commonSettings: _*). settings(addCommandAlias("sts",";startTest;test;stopTest"): _*). settings( startTest in ThisBuild := { println("starting server...") Thread.sleep(500) },stopTest in ThisBuild := { println("stopping server...") Thread.sleep(500) } ) lazy val app = (project in file("app")). settings(commonSettings: _*). settings( libraryDependencies += specs2Core % Test ) lazy val webapp = (project in file("webapp")). settings(commonSettings: _*). settings( libraryDependencies += specs2Core % Test ) 您可以根据需要替换ThisBuild中的startTest和ThisBuild中的stopTest. root> sts starting server... [success] Total time: 1 s,completed Jan 13,2015 5:20:58 PM [info] HelloWorldSpec .... [info] Passed: Total 3,Failed 0,Errors 0,Passed 3 [success] Total time: 1 s,2015 5:20:59 PM stopping server... [success] Total time: 1 s,2015 5:20:59 PM root> project app [info] Set current project to app app> sts starting server... [success] Total time: 1 s,2015 5:21:15 PM [info] HelloWorldSpec .... [info] Passed: Total 3,2015 5:21:16 PM stopping server... [success] Total time: 1 s,2015 5:21:16 PM (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |