RUnit测试卸载的软件包

时间:2009-12-15 12:33:15

标签: unit-testing r

我正在关注this question的提示,但我很不耐烦,我想更快地运行我的测试,而不必等待R CMD check src之前调用的30多个检查{{} 1}}。

我认为我可以做的是为that R-wiki page中建议的checking tests添加--standalone选项,以便我可以独立于doRUnit.R运行单元测试。< / p>

我将这些行添加到脚本中:

R CMD

通过此更改,脚本将独立于我调用脚本的目录找到 opt <- list(standalone=NULL) if(require("getopt", quietly=TRUE)) { ## path to unit tests may be given on command line, in which case ## we also want to move the cwd to this script opt <- getopt(matrix(c('standalone', 's', 0, "logical"), ncol=4, byrow=TRUE)) if(!is.null(opt$standalone)) { ## switch the cwd to the dir of this script args <- commandArgs() script.name <- substring(args[substring(args, 1, 7)=="--file="], 8, 1000) if(!is.null(script.name)) setwd(dirname(script.name)) } } 个文件。

现在剩下的问题是test.*\.R脚本加载已安装的库,它不会doRUnit.R组成库的文件。

假设我想加载source()目录中的每个文件,我该怎么做?

假设您有更好的测试架构(满足“快速”,“卸载”的要求),它是什么?

2 个答案:

答案 0 :(得分:3)

您可能需要手动循环遍历R目录中的文件和source()目录,可能需要source(dir("/some/Path", pattern="*.R", full.names=TRUE)之类的内容。

但我感觉R CMD INSTALL做了一点点。使用已安装的代码可能会更好。直接运行您的单元测试,正如您所做的那样,以及维基页面建议,已经非常好了。所以没有更好的方案来自我。但请告诉我们。

编辑:另请注意,R 2.10.1为我们提供了加速R CMD INSTALL的新选项:

  

2.10.1新功能

     

R CMD INSTALL有新选项--no-R,   --no-libs, - no-data, - no-help, - no-demo, - no-exec和--no-inst禁止指定安装   包的一部分。这些是   用于特殊目的(例如   构建帮助页面数据库   没有完全安装所有   包)。

这也应该有所帮助。

答案 1 :(得分:0)

对脚本的进一步补充/更正。

我现在可以doRUnit.R --standalone调用它 或由R CMD check

调用
      if(!is.null(script.name)) {
        setwd(dirname(script.name))
        path <- '../inst/RUnit/'
      }
.
.
.

  if (is.null(opt$standalone)) {
    cat("\nRunning unit tests of installed library\n")
    library(package=pkg, character.only=TRUE)
  } else {
    cat("\nRunning unit tests of uninstalled library\n")
    source(dir("../R/", pattern=".*\\.R", full.names=TRUE))
  }