2012-09-07 82 views

回答

7

我會回答我自己的問題:-)

我在項目現場問了同樣的問題。 目前似乎沒有這樣的支持測試,但最近通過使用R的開發版本和利用探查器的一些新功能打開的可能性。不幸的是,這樣做似乎是一項巨大的工作,但希望有人能夠在這方面取得領先。

尋找以下詳細信息in this ticket

+4

看來這個答案有點過時了,看到我的答案。 – jhin

19

有新來的covr package這似乎做你想要的一切,以及更多!它提供與各種CI服務和閃亮的整合。它可以與任何類型的測試基礎結構(testthat,RUnit,其他)協同工作,也可以與編譯代碼一起工作。


接下來的內容只是一個非常簡單的演示案例,我很快編譯以幫助您開始。

library(devtools) 
install_github("jimhester/covr") 
create("testcovr") 
use_testthat("testcovr") 

添加含有

doublefun <- function(x, superfluous_option) { 
    if (superfluous_option) { 
     2*x 
    } else { 
     3*x 
    } 
} 

文件testcovr/R/doublefun.r和含有

context("doublefun") 

test_that("doublefun doubles correctly", { 

    expect_equal(doublefun(1, TRUE), 2) 
}) 

文件testcovr/tests/testthat/test.doublefun.r然後運行例如

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 
+1

testthat包本身使用covr來測量代碼覆蓋率。這在testthat中是可見的[travis.yml文件](https://github.com/hadley/testthat/blob/24d76a1ed7b018440dd91450fce8a02420480955/.travis.yml)。 –