我正在编写一个 R 包,并且正在使用 testthat 进行单元测试。我的许多单元测试都是用于测试在特定于我的包的特定对象上工作的功能。对于这些测试,我制作了一个辅助函数来设置一个模拟对象。我还有其他一些辅助函数来减少单元测试中的代码量。
目前,这些帮助函数位于我的R/
文件夹中,因为它们可用于我的单元测试文件(位于 中tests/testthat/
)。我觉得将仅用于单元测试的函数放在R/
文件夹中有点奇怪。如果可以将它们放在tests/
文件夹中的某个位置,那就太好了。但似乎这样做会使它们在单元测试期间不可用。请注意,这些辅助函数用于多个不同的测试文件,因此仅将辅助函数放在包含单元测试的文件的顶部并不是解决方案。
另一个相关的问题是在哪里放置用于单元测试的数据文件。例如,我的一些函数适用于包中的ExpressionSet
对象limma
(在Bioconductor上可用),我在使用该load()
函数进行单元测试期间将其加载到 R 中。目前我将它们放在inst/extdata
文件夹中,因为这样我可以system.file()
在单元测试期间访问它们。此文件夹还包含其他数据文件,这些文件是为包的用户准备的。我觉得将我的测试数据(不适合最终用户)放置在与包数据相同的位置(用于最终用户)有点奇怪。
所以我的问题是,是否可以将单元测试辅助函数和测试数据都放在tests/
目录中。如果是这样,我如何从单元测试中访问这些文件?单元测试助手和单元测试数据的最佳实践/约定是什么?