将scala代码覆盖工具jacoco集成到play 2.2.x项目中
发布时间:2020-12-16 09:50:14 所属栏目:安全 来源:网络整理
导读:我的目标是将jacoco集成到我的play 2.2.0项目中. 我试图遵循的网络上的不同指南大多增加了混淆,而不是关闭目标. 更加混乱 大多数指南假设存在build.sbt 它似乎被一个不同的build.scala所取代 有一个jacoco4sbt和一个普通的jacoco 哪一个最适合与scala play框
我的目标是将jacoco集成到我的play 2.2.0项目中.
我试图遵循的网络上的不同指南大多增加了混淆,而不是关闭目标. 更加混乱 >大多数指南假设存在build.sbt >它似乎被一个不同的build.scala所取代 >有一个jacoco4sbt和一个普通的jacoco >哪一个最适合与scala play框架2一起使用 当前状态 在plugins.sbt中添加 addSbtPlugin("de.johoop" % "jacoco4sbt" % "2.1.2") 在build.scala中添加 import de.johoop.jacoco4sbt.JacocoPlugin._ lazy val jacoco_settings = Defaults.defaultSettings ++ Seq(jacoco.settings: _*) 有了这些变化,我不会在sbt或播放控制台中获得“jacoco”任务. 让这个工作的适当步骤是什么? 更新 import com.typesafe.sbt.SbtNativePackager._ import com.typesafe.sbt.SbtScalariform._ import play.Project._ import sbt.Keys._ import sbt._ import sbtbuildinfo.Plugin._ import de.johoop.jacoco4sbt.JacocoPlugin._ object BuildSettings { val buildOrganization = "XXXXX" val buildVersion = "0.1" val buildScalaVersion = "2.10.2" val envConfig = "-Dsbt.log.format=false -Dconfig.file=" + Option(System.getProperty("env.config")).getOrElse("local.application") scalacOptions ++= Seq("-encoding","UTF-8","-deprecation","-unchecked","-feature") javaOptions += envConfig val buildSettings = Defaults.defaultSettings ++ Seq ( organization := buildOrganization,version := buildVersion,scalaVersion := buildScalaVersion ) } object Resolvers { val remoteRepoUrl = "XXXXXXXXXXXX" at "http://nexus.cXXXXX/content/repositories/snapshots/" val publishRepoUrl = "XXXXXXXXXXXX" at "http://nexus.ciXXXXXXXXXXXXXXXX/content/repositories/snapshots/" } object Dependencies { val ods = "XXXXXXXXX" % "XXXXXX-ws" % "2.2.1-SNAPSHOT" val scalatest = "org.scalatest" %% "scalatest" % "2.0.M8" % "test" val mockito = "org.mockito" % "mockito-all" % "1.9.5" % "test" } object ApplicationBuild extends Build { import BuildSettings._ import Dependencies._ import Resolvers._ // Sub-project specific dependencies val commonDeps = Seq( ods,scalatest,mockito ) //val bN = settingKey[Int]("current build Number") val gitHeadCommitSha = settingKey[String]("current git commit SHA") val release = settingKey[Boolean]("Release") lazy val jacoco_settings = Defaults.defaultSettings ++ Seq(jacoco.settings: _*) lazy val nemo = play.Project( "nemo",path = file("."),settings = Defaults.defaultSettings ++ buildSettings ++ Seq(libraryDependencies ++= commonDeps) ++ Seq(scalariformSettings: _*) ++ Seq(playScalaSettings: _*) ++ buildInfoSettings ++ jacoco_settings ++ Seq( sourceGenerators in Compile <+= buildInfo,buildInfoKeys ++= Seq[BuildInfoKey]( resolvers,libraryDependencies in Test,buildInfoBuildNumber,BuildInfoKey.map(name) { case (k,v) => "project" + k.capitalize -> v.capitalize },"envConfig" -> envConfig,// computed at project load time BuildInfoKey.action("buildTime") { System.currentTimeMillis } // re-computed each time at compile ),buildInfoPackage := "com.springer.nemo" ) ++ Seq(resolvers += remoteRepoUrl) ++ Seq(mappings in Universal ++= Seq( file("ops/rpm/start-server.sh") -> "start-server.sh",file("ops/rpm/stop-server.sh") -> "stop-server.sh" )) ).settings(version <<= version in ThisBuild) lazy val nemoPackaging = Project( "nemoPackaging",file("nemoPackaging"),settings = Defaults.defaultSettings ++Seq(Packaging.settings:_*) ) def publishSettings = Seq( publishTo := Option(publishRepoUrl),credentials += Credentials( "Repo","http://mycompany.com/repo","admin","admin123")) } 注意:jacoco正在运行,但不接受我们的测试.输出: jacoco:cover [info] Compiling 1 Scala source to /home/schl14/work/nemo/target/scala-2.10/classes... [info] ScalaTest [info] Run completed in 13 milliseconds. [info] Total number of tests run: 0 [info] Suites: completed 0,aborted 0 [info] Tests: succeeded 0,failed 0,canceled 0,ignored 0,pending 0 [info] All tests passed. [info] Passed: Total 0,Failed 0,Errors 0,Passed 0 [info] No tests to run for nemo/jacoco:test 解决方法
我这样解决了它.
将以下内容添加到plugins.sbt addSbtPlugin("de.johoop" % "jacoco4sbt" % "2.1.2") 在build.scala中,我添加了一个新的导入 import de.johoop.jacoco4sbt.JacocoPlugin._ 并将jacoco添加到配置部分,就像这样 lazy val xyz = play.Project( "xyz",settings = Defaults.defaultSettings jacoco.settings ++ //this is the important part. ).settings(parallelExecution in jacoco.Config := false) //not mandatory but needed in `most cases as most test can not be run in parallel` 在这些步骤之后jacoco:封面在sbt和play控制台中可用,并且还发现了我们的测试. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |