r - 使用 Roxygen 和 testthat,使内部辅助函数可用于 R CMD 检查期间调用的测试用例的正确方法是什么?

标签 r roxygen2 testthat

我正在创建一个 R 包,发现将一个文件中的部分逻辑分解为我在同一个文件中定义的内部辅助函数很有用。我有一种特殊情况,我的函数通过 match.fun() 决定使用哪个辅助函数。因为它们对其他功能或人员没有用处,所以我不想将它们放在单独的文件中,也不想导出它们。

我所有的测试用例都使用 test_dir() 通过。当我不导出这些函数时,我的 testthat 案例在 R CMD 检查期间失败。

"object 'helperfunction1' of mode 'function' was not found", quote(get(as.character(FUN),
         mode = "function", envir = envir)))

看了this post之后,如果我明确地导出或添加导出条目到 NAMESPACE,我可以让事情正常工作,但我不想导出这些。

有没有更好的方法来执行此操作并且不需要我导出? (我承认问题的根源可能是 match.fun() 并且我对在运行时调用函数的其他方式持开放态度。)

最佳答案

根据内存,我上次阅读文档时并不清楚(它可能已经更改),但只要所有内容都在正确的目录中,它就会正常工作(无需导出):

你应该有一个文件:

tests/run-all.R

看起来像:

library(testthat)
library(myPackage)

test_package("myPackage")

然后你的个人测试文件应该在目录inst/tests

这些将在您执行 R CMD 检查 时运行,否则您可以在 R 中手动调用 test_package("myPackage")

关于r - 使用 Roxygen 和 testthat,使内部辅助函数可用于 R CMD 检查期间调用的测试用例的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19279544/

相关文章:

重新连接加权图会产生 NA

r - 如果下一个有效数据点距离超过 2 个间隔,则用零填充 R 中的 NA

r - 使用 roxygen2 处理示例文件 : backslashes are duplicated (\dontrun becomes\\dontrun)

r - 在 R 中跳过对 M1mac 的测试

r - R包中打印功能的测试覆盖率

r - 使用Rethinking R软件包拟合贝叶斯模型时出错

r - ggplot2 中仅连接连续数据的绘图线

氧气 : how to document method without cluttering the help index?

r-package - R CMD 检查名称中带有点的非 S3 方法,其中点之前的部分名称与 utils 中的泛型一致

r - covr 显示 0% 的覆盖率,而所有带有 testthat 的测试都通过了