我正在编写一个 R 包,并使用 testthat 进行单元测试。我的许多单元测试都是为了测试适用于我的包特定对象的功能。对于这些测试,我创建了一个辅助函数来设置模拟对象。我还有一些其他辅助函数来减少单元测试中的代码量。
目前这些辅助函数在我的R/
文件夹,因为这样它们就可以用于我的单元测试文件(位于tests/testthat/
)。我发现将仅用于单元测试的函数放在R/
文件夹。如果能把它们放在某个地方就好了tests/
文件夹。但这样做似乎会使它们在单元测试期间不可用。请注意,这些辅助函数用于多个不同的测试文件,因此仅将辅助函数放置在包含单元测试的一个文件的顶部并不是一种解决方案。
另一个相关问题是在哪里放置用于单元测试的数据文件。例如我的一些功能可以工作ExpressionSet
对象来自limma
包(可在生物导体 http://www.bioconductor.org/),我在单元测试期间将其加载到 R 中load()
功能。目前我把它们放在inst/extdata
文件夹,因为这样我就可以通过以下方式访问它们system.file()
在我的单元测试期间。该文件夹还包含供该包的用户使用的其他数据文件。我发现将不适合最终用户的测试数据与适合最终用户的包数据放在同一位置有点奇怪。
所以我的问题是,是否可以将单元测试辅助函数和测试数据全部放在tests/
目录。如果是这样,我如何从单元测试中访问这些文件?单元测试助手和单元测试数据的最佳实践/约定是什么?
我明白文件在tests/testthat/
开始于helper
在运行任何测试之前由 testthat 获取。因此,您可以将用于测试的辅助函数放置在适当命名的内部helper-*.R
within tests/testthat/
.
来自 R 的帮助source_file
from testthat
(?testthat::source_file
)
The expectation is that the files can be sourced in alphabetical
order. Helper scripts are R scripts accompanying test scripts but
prefixed by ‘helper’. These scripts are once before the tests are
run.
一个例子可以在源代码dplyr https://github.com/hadley/dplyr/ on github
.
至于测试数据。我遵循这个问题的一条评论的建议:使用 testthat 将自动化测试的数据放在哪里? https://stackoverflow.com/questions/32328802并使用inst/testdata
,然后使用访问文件system.file("testdata",...,package="my_package")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)