是否有任何工具可以使用该testthat
包评估 R 脚本的代码覆盖率?除了在RJournal 文章的“未来工作”部分中提到该主题外,我在 Google上一无所获。
问问题
3742 次
4 回答
23
新到货的covr
包裹似乎可以满足您的一切需求,还有更多!它提供与各种 CI 服务的集成和闪亮。它适用于任何类型的测试基础设施(testthat、RUnit 等),也适用于已编译的代码。
以下只是一个非常简单的演示案例,我快速编译以帮助您入门。
install.packages("covr")
添加一个testcovr/R/doublefun.r
包含
doublefun <- function(x, superfluous_option) {
if (superfluous_option) {
2*x
} else {
3*x
}
}
和一个testcovr/tests/testthat/test.doublefun.r
包含
context("doublefun")
test_that("doublefun doubles correctly", {
expect_equal(doublefun(1, TRUE), 2)
})
然后运行例如
test("testcovr")
## Testing testcovr
## doublefun : .
library(covr)
package_coverage("testcovr")
## doublefun : .
##
## Package Coverage: 66.67%
## R/doublefun.r: 66.67%
zero_coverage(package_coverage("testcovr"))
## doublefun : .
##
## filename first_line last_line first_column last_column value
## 3 R/doublefun.r 5 5 9 11 0
于 2015-03-31T02:05:02.223 回答
7
我会回答我自己的问题:-)
我在项目现场问了同样的问题。目前似乎没有对testthat库的支持,但最近通过使用 R 的开发版本并利用分析器的一些新功能打开了这种可能性。不幸的是,这似乎是一项艰巨的工作,但希望有人能带头。
在这张票中找到详细信息。
于 2012-09-11T08:59:20.817 回答
1
这是在函数级别计算一组 R 文件的测试覆盖率的尝试:
https://gist.github.com/cannin/819e73426b4ebd5752d5
它依赖于使用正则表达式来查找函数的创建位置和调用时间。
于 2014-11-02T16:24:18.833 回答
1
您可以使用以下解决方案来评估使用该testthat
包的 R 脚本的代码覆盖率:
library(covr)
coverage_to_list()
于 2018-09-11T22:45:07.863 回答