Testthat и covr за один раз

Я хотел бы запустить тесты для пакета с testthat и вычислить покрытие кода с covr, Кроме того, результаты testthat должны быть сохранены в формате JUnit XML и результаты из covr должны быть сохранены в формате Cobertura.

Следующий код делает трюк (когда getwd() это корень пакета):

options("testthat.output_file" = "test-results.xml")
devtools::test(reporter = testthat::JunitReporter$new())

cov <- covr::package_coverage()
covr::to_cobertura(cov, "coverage.xml")

Однако тесты выполняются дважды. Однажды с devtools::test и однажды с covr::package_coverage,

Я понимаю, что covr::package_coverage выполняет тесты, но не производит test-results.xml,

Как следует из названия, я хотел бы получить оба test-results.xml а также coverage.xml с одним выполнением набора тестов.

0 ответов

Из справочного руководства covr (https://cran.r-project.org/web/packages/covr/covr.pdf)

Эта функция использует tools::testInstalledPackage() для запуска кода, если вы хотите протестировать свой пакет другим способом, вы можете установить type = "none" и передайте код для запуска как вектор символов в code параметр

covr::package_coverage(
    type = "none",
    code = "testthat::test_package(
'myPackage',
reporter = testthat::JunitReporter$new(file = 'test-results.xml')
)")

Другие вопросы по тегам