Следующие два обходных пути работают на моем компьютере (sbt-scoverage 1.5.1, sbt 1.1.1, scala 2.12.5)
Обходное решение 1 - Использование inConfig
для настройки конфигурации:
inConfig(IntegrationTest)(ScoverageSbtPlugin.projectSettings),
inConfig(IntegrationTest)(Seq(coverageMinimum := 21, coverageFailOnMinimum := true))
Выполняется sbt clean coverage it:test it:coverageReport
throws Coverage minimum was not reached
.
Обходной путь 2 - Измените настройку coverageMinimum
в пределахпользовательская команда :
def itTestWithMinCoverage = Command.command("itTestWithMinCoverage") { state =>
val extracted = Project extract state
val stateWithCoverage = extracted.append(Seq(coverageEnabled := true, coverageMinimum := 21.0, coverageFailOnMinimum := true), state)
val (s1, _) = Project.extract(stateWithCoverage).runTask(test in IntegrationTest, stateWithCoverage)
val (s2, _) = Project.extract(s1).runTask(coverageReport in IntegrationTest, s1)
s2
}
commands ++= Seq(itTestWithMinCoverage)
Сейчас выполняется sbt itTestWithMinCoverage
бросков Coverage minimum was not reached
.Обратите внимание, что после выполнения itTestWithMinCoverage
state
отбрасывается, поэтому coverageMinimum
должно вернуться к значению по умолчанию и, таким образом, не повлиять на юнит-тесты.
Кажется, проблема в этом (кроме моего непонимания, как точно определяется область действия)работа) checkCoverage
получает значение по умолчанию coverageMinimum
даже после установки coverageMinimum in IntegrationTest
.