R для пакета testthat

Есть ли какие-либо инструменты для оценки покрытия кода для R-скриптов с помощью пакета testthat? Я ничего не нашел от Google, кроме упоминания темы в разделе "Работа в будущем" статьи RJournal.

Ответ 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()