J'ai une configuration d'application multi-projet SBT (Play Framework) comme suit. Tous les sous-modules sont sous modules
mais tous les cas de test qui couvrent tous les sous-modules sont dans le projet "root".SBT + JaCoCo ne couvrant pas toutes les classes "jacoco.includes" de différents projets
|-application
|-src
|-conf
|-modules
| |-proj1
| | |-src
| | |-conf
| | |-target
| |-proj2
| | |-src
| | |-conf
| | |-target
| |-proj3
| | |-src
| | |-conf
| | |-target
| |-proj4
| |-src
| |-conf
| |-target
|-test
| |-src //I have test cases of all other projs here
|-build.sbt
|-plugins.sbt
Mon build.sbt
ressemble à quelque chose comme ça.
name := """my-proj"""
lazy val IntegrationTest = config("it") extend(Test)
lazy val commonSettings = jacoco.settings ++ itJacoco.settings ++ Seq(
organization := "me.abc",
version := "0.1.0",
scalaVersion := "2.11.7",
crossPaths := false,
routesGenerator := InjectedRoutesGenerator
)
lazy val appDependencies = Seq(
cache,
"org.mockito" % "mockito-all" % "1.10.19"
)
lazy val scalacheck = "org.scalacheck" %% "scalacheck" % "1.13.4"
lazy val aaRoot = (project in file(".")).configs(IntegrationTest).settings(commonSettings: _*).settings(
libraryDependencies ++= appDependencies,
libraryDependencies += scalacheck % Test,
parallelExecution in Test := false,
javaOptions in Test += "-Dconfig.file=conf/" + Option(System.getProperty("test.config")).getOrElse("application") + ".conf",
parallelExecution in jacoco.Config := false,
jacoco.includes in jacoco.Config := Seq("./modules/*/target/classes/com/me/**/*"),
parallelExecution in itJacoco.Config := false,
itJacoco.includes in itJacoco.Config := Seq("./modules/*/target/classes/com/me/**/*"),
Keys.fork in itJacoco.Config := true,
Keys.fork in jacoco.Config := true
).enablePlugins(PlayJava).disablePlugins(plugins.JUnitXmlReportPlugin).dependsOn(
proj1 % "compile->compile",
proj2 % "compile->compile",
proj3 % "compile->compile",
proj4 % "compile->compile",
).aggregate(
proj1,
proj2,
proj3,
proj4
)
lazy val proj1 = (project in file("modules/proj1")).configs(IntegrationTest).settings(commonSettings: _*).settings(
libraryDependencies ++= appDependencies
).enablePlugins(PlayJava)
fork in run := false
PlayKeys.externalizeResources := false
Comme vous pouvez le voir, aaRoot
, je suis en train de jacoco.includes
les fichiers de classe d'autres dossier cible du module (j'ai essayé plusieurs autres approches, mais rien n'a fonctionné). Tous les cas de test fonctionnent bien, mais jacoco
ne pouvait rien couvrir.
[info] ------- Jacoco Coverage Report --------
[info]
[info] Lines: 0% (>= required 0.0%) covered, 0 of 0 missed, OK
[info] Instructions: 0% (>= required 0.0%) covered, 0 of 0 missed, OK
[info] Branches: 0% (>= required 0.0%) covered, 0 of 0 missed, OK
[info] Methods: 0% (>= required 0.0%) covered, 0 of 0 missed, OK
[info] Complexity: 0% (>= required 0.0%) covered, 0 of 0 missed, OK
[info] Class: 0% (>= required 0.0%) covered, 0 of 0 missed, OK
[info] Check /Users/RP/application/target/jacoco for detail report
Il est clair que le jacoco.includes
ne regarde pas toutes les classes que je posais à regarder.
J'ai essayé de nombreuses façons et essayé d'utiliser it-jacoco:cover
, mais rien n'a fonctionné. Tous les conseils ou l'aide seraient appréciés.