我对单元测试非常陌生,我想为R软件包的功能实现一些简单的单元测试。问题在于该R软件包的大多数函数当前未导出,因此大多数单元测试将涉及NAMESPACE
文件中未提及的R函数。
这涉及以下R包:https://gitlab.com/f.santos/anthropmmd/tree/devel
我正在使用testthat
,并且当我尝试测试未导出的R函数(例如,包中最简单的函数max3
)时,出现以下错误消息:
> setwd('............./AnthropMMD/')
> library(devtools)
> devtools::load_all()
Loading AnthropMMD
Registered S3 methods overwritten by 'ggplot2':
method from
[.quosures rlang
c.quosures rlang
print.quosures rlang
Registered S3 methods overwritten by 'car':
method from
influence.merMod lme4
cooks.distance.influence.merMod lme4
dfbeta.influence.merMod lme4
dfbetas.influence.merMod lme4
Attaching package: ‘testthat’
The following objects are masked from ‘package:devtools’:
setup, test_file
> test()
Loading AnthropMMD
Testing AnthropMMD
✔ | OK F W S | Context
✖ | 0 1 | max3
────────────────────────────────────────────────────────────────────────────────
test-max3.R:5: error: max3 gives correct answer
could not find function max3
我发现on this thread可以在运行测试之前使用devtools::load_all()
来解决问题,但对我而言不起作用,我想我应该错过了一些东西。
为了能够测试R包中未导出的功能,应该遵循什么正确而完整的设置?
谢谢!
(注意:由于我不是Rstudio用户,请不要给我任何“ Rstudio特定”的答案;))