我正在写一个R包,我正在使用testthat进行单元测试.我的许多单元测试用于测试特定于我的包的特定对象的函数.对于这些测试,我已经创建了一个帮助函数来设置模拟对象.我还有一些其他辅助函数来减少单元测试中的代码量.
目前这些辅助函数位于我的R/
文件夹中,因为它们可用于我的单元测试文件(在其中tests/testthat/
).我发现放置仅用于R/
文件夹中的单元测试的函数有点奇怪.如果可以将它们放在tests/
文件夹中的某个位置会很好.但似乎这样做会使单元测试期间无法使用它们.请注意,这些辅助函数用于几个不同的测试文件,因此只需将辅助函数放在包含单元测试的一个文件的顶部就不是解决方案.
另一个相关问题是放置用于单元测试的数据文件的位置.例如,我的一些函数处理ExpressionSet
来自limma
包的对象(在Bioconductor上可用),我在使用该load()
函数进行单元测试期间将其加载到R中.目前我将它们放在inst/extdata
文件夹中,因为我可以system.file()
在单元测试期间访问它们.此文件夹还包含其他数据文件,这些文件适用于程序包的用户.我觉得把我的测试数据放在与最终用户相同的位置,这与最终用户无关.
所以我的问题是,是否可以将单元测试辅助函数和测试数据全部放在tests/
目录中.如果是这样,我如何从单元测试中访问这些文件?单元测试助手和单元测试数据的最佳实践/约定是什么?