未导出的R函数的单元测试

时间:2019-06-06 08:47:42

标签: r unit-testing testthat

我对单元测试非常陌生,我想为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特定”的答案;))

0 个答案:

没有答案