Есть ли какие-либо инструменты для оценки покрытия кода для R-скриптов с помощью пакета testthat
? Я ничего не нашел от Google, кроме упоминания темы в разделе "Работа в будущем" статьи RJournal.
R для пакета testthat
Ответ 1
Я отвечу на свой вопрос: -)
Я задал тот же вопрос на сайте проекта. Кажется, в настоящий момент нет такой поддержки для библиотеки testthat, но возможность недавно открылась с использованием версии разработки R и использования некоторых новых функций профилировщика. К сожалению, это кажется огромной работой, но, надеюсь, кто-то возьмет на себя инициативу.
Найдите данные в этом билете.
Ответ 2
Есть недавно прибывший пакет 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
Ответ 3
Здесь попытка вычисления охвата теста для набора файлов R на уровне функции:
https://gist.github.com/cannin/819e73426b4ebd5752d5
Это зависит от использования регулярных выражений, чтобы найти, где создаются функции и когда они вызываются.
Ответ 4
Следующее решение можно использовать для оценки покрытия кода для сценариев R с помощью пакета testthat
:
library(covr)
coverage_to_list()