我正在尝试为R中的一个包函数编写测试。
假设我们有一个简单的函数,它使用`writeLines()`将一个字符串`x`写入磁盘:
一种测试方法是检查文件是否存在。通常,在导出功能运行之前,它不应该存在,但在运行后应该存在。另外,您可能还想测试文件大小是否大于0:
这是测试它的好方法吗?在CRAN存储库政策中指出,“软件包不应编写用户的主文件空间(包括剪贴板)或文件系统上除R会话临时目录之外的任何位置”。这个测试是否违反了这个限制?
有一个expect_output_file函数。从文档和示例中,我不确定这是否是更适合测试该函数的期望。它需要一个“对象”参数,应该是“要测试的对象”。在我的情况下,要测试的对象是什么?
假设我们有一个简单的函数,它使用`writeLines()`将一个字符串`x`写入磁盘:
exporting_function <- function(x, file) {
writeLines(x, con = file)
invisible(NULL)
}
一种测试方法是检查文件是否存在。通常,在导出功能运行之前,它不应该存在,但在运行后应该存在。另外,您可能还想测试文件大小是否大于0:
library(testthat)
test_that("file is written to disk", {
file = 'output.txt'
expect_false(file.exists(file))
exporting_function("This is a test",
file = file)
expect_true(file.exists(file))
expect_gt(file.info('output.txt')$size, 0)
})
这是测试它的好方法吗?在CRAN存储库政策中指出,“软件包不应编写用户的主文件空间(包括剪贴板)或文件系统上除R会话临时目录之外的任何位置”。这个测试是否违反了这个限制?
有一个expect_output_file函数。从文档和示例中,我不确定这是否是更适合测试该函数的期望。它需要一个“对象”参数,应该是“要测试的对象”。在我的情况下,要测试的对象是什么?
devtools
,Rcpp
和RcppArmadillo
这样为用户设置 R 包目录结构的包将永远无法在 CRAN 上。 - duckmayr\dontrun{}
来实现。 - clemens