加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

将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”任务.

让这个工作的适当步骤是什么?

更新
按要求提供build.scala的内容

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控制台中可用,并且还发现了我们的测试.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读