Почему jacoco:cover сообщает о 0 тестах, 0 сбоях, 0 ошибках для тестов в Play 2.2?

Я могу запустить свои тесты, используя sbt test. Когда я запускаю тесты, используя sbt jacoco:cover или sbt jacoco:test и sbt jacoco:report, я получаю 0 tests, 0 errors, 0 failures. Jacoco видит мои тестовые файлы, но не тесты

проект/Build.scala

import sbt._
import Keys._
import play.Project._
import de.johoop.jacoco4sbt._
import JacocoPlugin._

object ApplicationBuild extends Build {

   val appName         = "api"
   val appVersion      = "0.1-SNAPSHOT"

   lazy val s = playJavaSettings ++ Seq(jacoco.settings:_*)

   val appDependencies = Seq(
        "com.novocode" % "junit-interface" % "0.8" % "test"
   )

    val main = play.Project(appName, appVersion, appDependencies, settings = s).settings(

    **various resolvers**

   ).settings(
     jacoco.settings : _*
   ).settings( 
     testOptions in jacoco.Config += Tests.Argument("junitxml")    
   ).settings(
     testOptions in jacoco.Config += Tests.Setup( () => System.setProperty("config.file", "conf/application.conf") )
   ).settings(
     parallelExecution in jacoco.Config := false   
   )
} 

проект/plugins.sbt

// Use the Play sbt plugin for Play projects 
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.2.1")

// Use jacoco on sbt builds
libraryDependencies ++= Seq(
    "org.jacoco" % "org.jacoco.core" % "0.5.7.201204190339" artifacts(Artifact("org.jacoco.core", "jar", "jar")),
    "org.jacoco" % "org.jacoco.report" % "0.5.7.201204190339" artifacts(Artifact("org.jacoco.report", "jar", "jar"))
    )

 addSbtPlugin("de.johoop" % "jacoco4sbt" % "2.1.5")

Мои тесты находятся в каталоге tests

Я использую:

  • Играть 2.2.1
  • Ява 1.7.0_55
  • сбт 0.13.2

Большинство ответов, которые я нашел в Интернете для людей, столкнувшихся с той же проблемой, касались того, что parallelExecution не было установлено на false. Когда я проверяю sbt jacoco:parallelExecution в каталоге api, он устанавливается на false. Но когда я запускаю sbt jacoco:parallelExecution в каталоге project или test, для него устанавливается значение true.


person danclark1820    schedule 11.07.2014    source источник
comment
Не могли бы вы добавить вывод sbt --version и sbt about к вопросу?   -  person Jacek Laskowski    schedule 11.07.2014


Ответы (3)


Он начал работать, как только я добавил

.settings(
  Keys.fork in jacoco.Config := true    
)

в мой файл Build.scala. Я хотел бы объяснить больше о том, как это работает, но это все еще немного нечетко.

Спасибо всем за ответы. Теперь он отлично работает локально, но в Jenkins по-прежнему выполняется 0 тестов.

person danclark1820    schedule 17.07.2014

Я только что впервые протестировал его с последними версиями Play 2.3.1 и jacoco4sbt 2.1.5, и он работал без проблем. Честно говоря, я сам был очень удивлен, насколько гладко все прошло.

Вам не нужно следующее в project/plugins.sbt:

// Use jacoco on sbt builds
libraryDependencies ++= Seq(
    "org.jacoco" % "org.jacoco.core" % "0.5.7.201204190339" artifacts(Artifact("org.jacoco.core", "jar", "jar")),
    "org.jacoco" % "org.jacoco.report" % "0.5.7.201204190339" artifacts(Artifact("org.jacoco.report", "jar", "jar"))
)

Чтобы проверить это, я сначала создал приложение Play с помощью Typesafe Activator, используя шаблон play-scala.

➜  sandbox  activator new play-jacoco play-scala

Fetching the latest list of templates...

OK, application "play-jacoco" is being created using the "play-scala" template.

To run "play-jacoco" from the command line, "cd play-jacoco" then:
/Users/jacek/sandbox/play-jacoco/activator run

To run the test for "play-jacoco" from the command line, "cd play-jacoco" then:
/Users/jacek/sandbox/play-jacoco/activator test

To run the Activator UI for "play-jacoco" from the command line, "cd play-jacoco" then:
/Users/jacek/sandbox/play-jacoco/activator ui

➜  sandbox  cd play-jacoco

Затем я запустил activator, чтобы войти в оболочку, и выполнил test.

➜  play-jacoco  activator
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins
[info] Loading project definition from /Users/jacek/sandbox/play-jacoco/project
[info] Updating {file:/Users/jacek/sandbox/play-jacoco/project/}play-jacoco-build...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Set current project to play-jacoco (in build file:/Users/jacek/sandbox/play-jacoco/)
[play-jacoco] $ test
[info] Updating {file:/Users/jacek/sandbox/play-jacoco/}root...
[info] Resolving jline#jline;2.11 ...
[info] Done updating.
[info] Compiling 5 Scala sources and 1 Java source to /Users/jacek/sandbox/play-jacoco/target/scala-2.11/classes...
[info] Compiling 2 Scala sources to /Users/jacek/sandbox/play-jacoco/target/scala-2.11/test-classes...
[info] IntegrationSpec
[info]
[info] Application should
[info] + work from within a browser
[info]
[info] Total for specification IntegrationSpec
[info] Finished in 2 seconds, 615 ms
[info] 1 example, 0 failure, 0 error
[info] ApplicationSpec
[info]
[info] Application should
[info] + send 404 on a bad request
[info] + render the index page
[info]
[info] Total for specification ApplicationSpec
[info] Finished in 130 ms
[info] 2 examples, 0 failure, 0 error
[info] Passed: Total 3, Failed 0, Errors 0, Passed 3
[success] Total time: 17 s, completed Jul 11, 2014 7:57:23 PM

Следуя вики на сайте плагинов jacoco4sbt на GitHub, я добавил jacoco.settings в build.sbt в каталоге верхнего уровня. Я также добавил addSbtPlugin("de.johoop" % "jacoco4sbt" % "2.1.5") в project/plugins.sbt.

Других изменений не вносилось.

Я reload отредактировал оболочку активатора, чтобы загрузить изменения.

[play-jacoco] $ reload
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins
[info] Loading project definition from /Users/jacek/sandbox/play-jacoco/project
[info] Updating {file:/Users/jacek/sandbox/play-jacoco/project/}play-jacoco-build...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Set current project to play-jacoco (in build file:/Users/jacek/sandbox/play-jacoco/)

Когда я запустил jacoco:cover, плагин выполнился и отобразил результаты.

[play-jacoco] $ jacoco:cover
[info] Updating {file:/Users/jacek/sandbox/play-jacoco/}root...
[info] Resolving org.jacoco#org.jacoco.agent;0.7.0.201403182114 ...
[info] Done updating.
[info] ApplicationSpec
[info]
[info] Application should
[info] + send 404 on a bad request
[info] + render the index page
[info]
[info] Total for specification ApplicationSpec
[info] Finished in 22 ms
[info] 2 examples, 0 failure, 0 error
[info] IntegrationSpec
[info]
[info] Application should
[info] + work from within a browser
[info]
[info] Total for specification IntegrationSpec
[info] Finished in 22 ms
[info] 1 example, 0 failure, 0 error
[info] Passed: Total 3, Failed 0, Errors 0, Passed 3
[info]
[info] ------- Jacoco Coverage Report --------
[info]
[info] Lines: 57.5% (>= required 0.0%) covered, 34 of 80 missed, OK
[info] Instructions: 71.94% (>= required 0.0%) covered, 523 of 1864 missed, OK
[info] Branches: 27.78% (>= required 0.0%) covered, 26 of 36 missed, OK
[info] Methods: 81.94% (>= required 0.0%) covered, 41 of 227 missed, OK
[info] Complexity: 76.73% (>= required 0.0%) covered, 57 of 245 missed, OK
[info] Class: 57.14% (>= required 0.0%) covered, 12 of 28 missed, OK
[info] Check /Users/jacek/sandbox/play-jacoco/target/scala-2.11/jacoco for detail report
[info]
[success] Total time: 4 s, completed Jul 11, 2014 8:01:00 PM

Вот статус проекта.

[play-jacoco] $ about
[info] This is sbt 0.13.5
[info] The current project is {file:/Users/jacek/sandbox/play-jacoco/}root 1.0-SNAPSHOT
[info] The current project is built against Scala 2.11.1
[info] Available Plugins: sbt.plugins.IvyPlugin, sbt.plugins.JvmPlugin, sbt.plugins.CorePlugin, sbt.plugins.JUnitXmlReportPlugin, play.Play, play.PlayJava, play.PlayScala, play.twirl.sbt.SbtTwirl, com.typesafe.sbt.jse.SbtJsEngine, com.typesafe.sbt.jse.SbtJsTask, com.typesafe.sbt.web.SbtWeb, com.typesafe.sbt.webdriver.SbtWebDriver, com.typesafe.sbt.coffeescript.SbtCoffeeScript, com.typesafe.sbt.less.SbtLess, com.typesafe.sbt.jshint.SbtJSHint, com.typesafe.sbt.rjs.SbtRjs, com.typesafe.sbt.digest.SbtDigest, com.typesafe.sbt.mocha.SbtMocha, net.virtualvoid.sbt.graph.Plugin, com.timushev.sbt.updates.UpdatesPlugin, com.typesafe.sbteclipse.plugin.EclipsePlugin, org.sbtidea.SbtIdeaPlugin, com.typesafe.sbt.SbtNativePackager, de.johoop.jacoco4sbt.JacocoPlugin
[info] sbt, sbt plugins, and build definitions are using Scala 2.10.4
person Jacek Laskowski    schedule 11.07.2014

Вы должны удалить следующую строку.

testOptions in jacoco.Config += Tests.Argument("junitxml")

Это не поддерживается мнением. Список поддерживаемых параметров см. в документации.

person lpiepiora    schedule 11.07.2014