如何测试和比较包的多个版本的R函数?

时间:2014-09-05 09:25:12

标签: r integration-testing

我通过testthat使用单元测试来处理R中的许多简单函数,但是我有更复杂的函数,它们结合了简单的函数和业务逻辑。我想通过前后视图测试输入样本的累积影响。理想情况下,我希望针对各种候选更改执行此操作。

目前我是

  1. 使用Rmarkdown文档
  2. 按原样装入包
  3. 获取我的样本
  4. 按原样运行我的样本并输出结果表
  5. source新功能副本
  6. 再次运行我的样本并输出结果表
  7. 根据需要重新加载包和source不同的功能副本
  8. 这已经证明是困难的,因为某些函数位于包命名空间中仍然运行函数的包版本,使得结果不可靠,除非我彻底重新加载函数的所有下游依赖项。此外,该机制管理复杂,难以重用。

    是否有更好的策略来测试R包中的候选更改?

2 个答案:

答案 0 :(得分:1)

我通过在包含修正函数的影响分析文件夹中创建子包来减少此问题。

然后我使用devtools::load_all加载这些新功能版本。

然后,我可以通过命名空间访问原件来比较和对比结果,例如myoriginalpackage:::testfunction同时使用testfunction

查看新的{{1}}

答案 1 :(得分:0)

也许您可以在每个版本上用“Rcmd build YourPackage”替换步骤5和7。然后用

install.packages("Path/To/MyPackage_1.1.tar.gz", type="source")

测试旧版本,然后用1.2替换1.1