【问题标题】:R developing a bioconductor package with TDD (RUnit)R 使用 TDD (RUnit) 开发生物导体包
【发布时间】:2013-01-21 22:52:37
【问题描述】:

我正在尝试关注BioConductor RUnit guidelines。 我遵循了最小设置,所以我有:

Suggests: RUnit, BiocGenerics 在描述中

BiocGenerics:::testPackage("MyPackage") 在 MyPackage/tests/runTests.R 中

还有MyPackage/inst/unitTests/中的一些test_XXX.R文件

如果我运行单个测试文件:

library(RUnit)
source("LIBRARY FILES")
source("MyPackage/inst/unitTests/test_getKeywordValue.R")
test_getKeywordValue()

测试运行(并在需要失败时失败),但如果我运行

R CMD check MyPackage

命令说:

* checking tests ...
  Running ‘runTests.R’
 OK

但是不要在MyPackage/inst/unitTests 目录中运行我的测试...

我错过了什么?

Platform: x86_64-apple-darwin9.8.0  
R version 2.15.2 (2012-10-26)

【问题讨论】:

  • 这已被交叉发布到Bioconductor devel 邮件列表并收到了回复。
  • 是的,对不起,交叉发帖

标签: r package runit


【解决方案1】:

我不知道这方面的 BioC 指南,但我有许多 CRAN 包,它们使用 Martin Maechler 最初为一些 Rmetrics 包开发的方案。

R Wiki post 中有描述,你可以看看我在 RcppArmadillo 或 RcppGSL 或其他一些包中的变体。关键通常是一个文件tests/doRUnit.R,它会进行必要的旋转以从源代码或已安装的包运行。

【讨论】:

    【解决方案2】:

    问题解决了。

    故事如下:

    我在我的包裹里放了一个 .Rinstignore 文件,里面有这行:

    test/* 
    

    我期待 glob 样式的匹配(如 .gitignore),但正如 RShowDoc("R-exts") 所说:

    .Rinstignore 进行 perl 风格的正则表达式匹配。

    所以,我的规则 test/* 被 R 解释为:

    Ignore all files starting with test followed by 0 or more '/' 
    

    (部分 /* 被解释为匹配零个或多个 / 字符)

    使用grep 快速检查一下它是如何工作的:

    grep("test/*", "inst/unitTests/test_bar.R",perl=TRUE)
    [1] 1
    

    删除线

    test/* 
    

    .Rinstignore 解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-04
      • 2011-03-15
      • 1970-01-01
      • 1970-01-01
      • 2020-04-15
      • 2013-06-04
      • 2015-10-31
      • 2015-08-23
      相关资源
      最近更新 更多