【问题标题】:Unit testing Rcpp code in a package对包中的 Rcpp 代码进行单元测试
【发布时间】:2014-10-13 00:30:01
【问题描述】:

我在一个包中有一些 C++ 代码,我想对其进行单元测试,但我不想导出到 R。我见过:

Unit tests for code in the /src folder of an R package?

而我要测试的代码属于第二类:

或者您认为您的 C 代码更加独立,在这种情况下,您可以为 C 使用大量单元测试框架之一。

如果想从 C++ 进行测试(而不是使用 R 框架),那么设置测试套件的最佳方法是什么?你是把你的 C++ 测试放在 tests/ 中,然后在某个地方有一个带有 main 的 C++ 程序,还是你编写一个驱动程序函数来执行所有 C++ 测试,然后从 R 中调用它?

我想通过R CMD check 自动化测试可能是个好主意,但我不清楚如何使用 R 包框架自动化。

【问题讨论】:

  • 我建议您将问题缩小到编程问题。另请注意,这类问题很有可能会因为“寻找工具”或“基于意见”而被关闭。
  • 如果您希望测试由R CMD check 运行,您可以考虑添加一个configurecleanup 脚​​本来调用其他运行这些测试文件的脚本。有关详细信息,请参阅cran.r-project.org/doc/manuals/r-release/…
  • @KevinUshey,谢谢!这肯定会奏效!我希望已经有一些规范的方法可以做到这一点而无需编写额外的脚本,但似乎不是这样。
  • 我同意——但不幸的是,R CMD check 的内置工具仅适用于R 代码的单元测试。不过,我认为使用configure / cleanup 脚本仍然是最好的方法。 (或者如果你真的喜欢冒险的话,可以使用自定义的 makefile...)

标签: r unit-testing rcpp


【解决方案1】:

我不关注:

  • Rcpp 代码,但您不想将其暴露给R:当您想要将其暴露给(R ) 单元测试(在打包框架中)你做的。
  • 或者这只是选择一个(很多)C++ 单元测试框架之一的问题,比如Boost Test 库,或者Google C++ Testing library,或者...... --- 这些都没有被移植到 R “这样”

您能否再澄清一下您的问题?

也许你只是想以一种让Rcpp 调用它的方式来表达你的 C++ 代码,只从单元测试中这样你就可以得到结果,然后你可以通过一个流行的 R 单元测试进行测试构架。在这种情况下,答案可能与(当前)CRAN 上使用 Rcpp 的 276 个软件包中的任何一个非常相似,因为许多 do 实际上使用单元测试。

【讨论】:

  • 感谢您的回复,德克。我已经更新了我的问题——如果还不清楚,请告诉我。
  • Rcpp 有一个非常明确的范围。至少在我看来,您在这里想要的似乎超出了这个范围。正如我概述的那样,Rcpp 可能仍然可以帮助您,但您本质上有一个完全不同的问题(“我如何发布和测试 C++ 库”),这与 R 无关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-22
  • 2016-02-02
  • 1970-01-01
  • 1970-01-01
  • 2014-09-05
  • 1970-01-01
  • 2011-02-21
相关资源
最近更新 更多