Я использую sbt 0.13.9 (и ранее 0.13.8) и Scala 2.11.6.sbt интеграционные тесты, возвращающие код выхода 0 при неудачных тестах
При выполнении интеграционных тестов для моего проекта sbt всегда возвращает «успех» с кодом выхода 0, даже если он подтверждает неудачи теста. Конфигурация и настройки теста интеграции - это фондовые из sbt (см. Build.sbt ниже).
Обратите внимание на то, как отказ не распечатывает раздел «Неисправные тесты:», в отличие от отказа модульного теста.
Это странно по сравнению с единичными тестами, которые не могут правильно вызвать SBT вернуть код выхода 1.
С и мое подразделение и интеграции тестов, я имел чтобы включить forking, чтобы избежать проблем с загрузкой классов из-за динамической загрузки библиотеки Java. Если это была проблема с форкированием, я бы предположил, что я тоже увижу проблему с модульными тестами.
Мои интеграционные тесты связаны с запуском внешних процессов, которые я не знаю, влияет ли это на результаты sbt или нет.
Проект в вопросе можно найти здесь: build.sbt https://github.com/chipsenkbeil/scala-debugger
проекта заключается в следующем:
//
// DEBUGGER API PROJECT CONFIGURATION
//
lazy val scalaDebuggerApi = project
.in(file("scala-debugger-api"))
.configs(IntegrationTest)
.settings(Common.settings: _*)
.settings(Defaults.itSettings: _*)
.settings(Seq(
name := "scala-debugger-api",
// NOTE: Fork needed to avoid mixing in sbt classloader, which is causing
// LinkageError to be thrown for JDI-based classes
fork in Test := true,
fork in IntegrationTest := true,
libraryDependencies ++= Seq(
"org.slf4j" % "slf4j-api" % "1.7.5",
"org.slf4j" % "slf4j-log4j12" % "1.7.5" % "test,it",
"log4j" % "log4j" % "1.2.17" % "test,it",
"org.scalatest" %% "scalatest" % "2.2.1" % "test,it",
"org.scalamock" %% "scalamock-scalatest-support" % "3.2.1" % "test,it"
),
// JDK Dependency (just for sbt, must exist on classpath for execution,
// cannot be redistributed)
internalDependencyClasspath in Compile +=
{ Attributed.blank(Build.JavaTools) },
internalDependencyClasspath in Runtime +=
{ Attributed.blank(Build.JavaTools) },
internalDependencyClasspath in Test +=
{ Attributed.blank(Build.JavaTools) },
internalDependencyClasspath in IntegrationTest +=
{ Attributed.blank(Build.JavaTools) }
): _*)
.dependsOn(scalaDebuggerTest % "test->compile;it->compile")
//
// DEBUGGER TEST CODE PROJECT CONFIGURATION
//
lazy val scalaDebuggerTest = project
.in(file("scala-debugger-test"))
.settings(Common.settings: _*)
.settings(
// Do not publish the test project
publishArtifact := false,
publishLocal := {}
)
//
// MAIN PROJECT CONFIGURATION
//
lazy val root = project
.in(file("."))
.settings(Common.settings: _*)
.settings(
name := "scala-debugger",
// Do not publish the aggregation project
publishArtifact := false,
publishLocal := {}
).aggregate(scalaDebuggerApi, scalaDebuggerTest)
Это была моя проблема. Как оказалось, последняя версия scalatest (3.0.0-M9) содержит исправление; поэтому, обновление до этой версии исправило мою проблему. Благодаря! – Senkwich