R包中打印函数的测试覆盖率
Test coverage of print functions in R package
我在 R 包中有一个简单的打印功能:
print.tabyl <- function(x){
print.data.frame(x, row.names = FALSE)
}
我正在努力实现我的包的完整测试覆盖率,这让我很恼火,因为我未经测试的打印功能将我的测试覆盖率降低到 99%(否则会是 100%)。
但我不知道如何捕获打印函数的输出以便为其编写测试。如何为打印功能编写测试?
根据@alistaire 的建议,我使用 capture.output
编写了一个测试:
test_that("print.tabyl prints without row numbers", {
expect_equal(
mtcars %>% tabyl(am, cyl) %>% capture.output(),
c(" am 4 6 8", " 0 3 4 12", " 1 8 3 2")
)
})
这捕捉到 row.names
缺失;此结果与 capture.output(print.data.frame(mtcars %>% tabyl(am, cyl)))
不同,后者仍有行号。
使用 capture.output
既测试功能又计入 codecov.io 跟踪的覆盖范围。
我在 R 包中有一个简单的打印功能:
print.tabyl <- function(x){
print.data.frame(x, row.names = FALSE)
}
我正在努力实现我的包的完整测试覆盖率,这让我很恼火,因为我未经测试的打印功能将我的测试覆盖率降低到 99%(否则会是 100%)。
但我不知道如何捕获打印函数的输出以便为其编写测试。如何为打印功能编写测试?
根据@alistaire 的建议,我使用 capture.output
编写了一个测试:
test_that("print.tabyl prints without row numbers", {
expect_equal(
mtcars %>% tabyl(am, cyl) %>% capture.output(),
c(" am 4 6 8", " 0 3 4 12", " 1 8 3 2")
)
})
这捕捉到 row.names
缺失;此结果与 capture.output(print.data.frame(mtcars %>% tabyl(am, cyl)))
不同,后者仍有行号。
使用 capture.output
既测试功能又计入 codecov.io 跟踪的覆盖范围。