Nano Hash - криптовалюты, майнинг, программирование

Как вы навязываете покрытие кода Scala специально для интеграционных тестов?

Я запускаю интеграционный тест, используя следующую команду sbt

sbt очистить покрытие it:тестовое покрытиеОтчет

Эта команда запускает интеграционные тесты, инструментирует их, а также генерирует отчет.

Build.sbt имеет следующее:

coverageMinimum in IntegrationTest := 21.0
coverageFailOnMinimum in IntegrationTest := true

Вывод выглядит так:

[info] Statement coverage.: 20.16%
[info] Branch coverage....: 12.00%
[info] Coverage reports completed
[info] All done. Coverage was [20.16%]

Выходной результат имеет покрытие кода 20,16%, но ограничения в build.sbt не обеспечивают соблюдение этого ограничения.

Если я изменю build.sbt на следующий, он будет работать:

coverageMinimum := 21.0
coverageFailOnMinimum := true

Хотел узнать, чего мне не хватает для указания лимитов специально для интеграционных тестов.

Информация о версии:

сбт: 0.13.17

sbt-покрытие: 1.5.1


  • Это работает с соответствующей настройкой coverageFailOnMinimum, которая не установлена ​​по умолчанию, и что? 11.09.2018
  • Что вы имеете в виду под адекватной настройкой? Похоже, что те же два параметра, определенные в области интеграции, не распознаются. Что мне не хватает? 11.09.2018

Ответы:


1

Следующие два обходных пути, кажется, работают на моей машине (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 вызывает 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 должно вернуться к значению по умолчанию и, таким образом, не влиять на модульные тесты.

Кажется, проблема в том (помимо моего непонимания того, как именно работают области) #L126" rel="nofollow noreferrer">checkCoverage получает значение по умолчанию coverageMinimum даже после установки coverageMinimum in IntegrationTest.

15.09.2018
  • Я попробовал inconfig, 1-й подход, у меня не сработал. у вас более старая версия scala, чем у вас. я определил для теста и интеграционного теста, но, похоже, он его не читает 19.09.2018
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..


    © 2024 nano-hash.ru, Nano Hash - криптовалюты, майнинг, программирование