Ответ 1
На моей машине работают следующие два обхода (sbt-scoverage 1.5.1, sbt 1.1.1, scala 2.12.5)
inConfig
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
throws Coverage minimum was not reached
. Примечание после выполнения itTestWithMinCoverage
state
отбрасывается, так что coverageMinimum
должно возвращаться к значению по умолчанию и, таким образом, не влияет на модульные тесты.
Похоже, проблема заключается в том, что (помимо того, что я не понимаю, как работают области действия) checkCoverage
выбирает значение по умолчанию для coverageMinimum
checkCoverage
даже после установки coverageMinimum in IntegrationTest
.