我目前正在开发一个R包,其中大部分计算工作都是用C代码完成的。特别是,我有几个复杂的C例程,然后我用R函数包装。这些我知道我可以使用testthat进行测试,因为命名空间包含了被调用的C函数(我使用roxygen注释来生成命名空间)。
我遇到的困难是这些C例程中的一些具有一些复杂的子例程,其输出非常容易检查。这些函数永远不会直接从R调用,因此我的R /目录中没有代码具有roxygen注释,导致命名空间使这些函数可用。我想要做的是编写一个执行相同计算的R例程,然后使用testthat与C函数的输出进行比较。我已经完成了这个,当我加载整个共享库(使用dyn.load)时,它工作得很好,但我不认为这是我打算提交给CRAN的包中测试的正确方法。
我目前的解决方法是在我的R /目录中的文件中创建一个虚函数,然后对我希望加载的每个函数都有一个roxygen注释。这样,当我运行devtools :: document()时,这些函数都包含在命名空间中。
这是最好的方法,还是有其他更好/首选的方法?