首页 > 解决方案 > 一次性测试和覆盖

问题描述

我想对一个包运行测试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套件的执行。

标签: rtestthatcovr

解决方案


来自 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')
)")


推荐阅读