r - 一次性测试和覆盖
问题描述
我想对一个包运行测试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
套件的执行。
解决方案
来自 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')
)")
推荐阅读
- python-3.x - Python:对数性能对比
- php - Drupal7. 挂钩菜单(和其他)中的 url 不起作用
- javascript - 幻灯片中间没有出现猫头鹰轮播点
- excel - 带有 VLOOKUP 的 EXCEL 双 IF 语句 - 第二个 IF 语句出现处理错误
- mysql - 当我更新多对多关系中的实体时,如何阻止 Hibernate/JPA 删除连接表记录?
- php - PHP:将属性添加到不带引号的对象
- fluentd - 在给定不同标签的情况下,使用来自同一来源的 fluentd 解析不同的格式?
- javascript - 通过 ID 而不是索引迭代表列
- docker - ubuntu下如何在Digital Ocean上使用docker-ce?
- javascript - 为什么将变量设置为 !1 而不是 false?