如何使devtools :: test()考虑包依赖性

时间:2014-08-19 14:03:34

标签: r unit-testing dependencies devtools testthat

实际问题

似乎devtools::test()似乎无法确保在运行单元测试之前加载包的DESCRIPTION文件中所述的包依赖项。我怎么能改变它?

详细

我正在编写一个包(B)来导入我的另一个包(A)。

当我尝试通过devtools::test()运行单元测试时,或者更准确地说是通过RStudio中的快捷方式SHFT + CRTL + T,某些测试失败,因为导入的包似乎被忽略/未加载因此无法找到某个函数(isPackageInstalled)。

在运行A之前尝试手动加载导入的包devtools::test()也无济于事。我想这是因为devtools(或testthat)“模拟”一个新的工作空间状态?然而,在手动加载包A之后,“逐个”运行单元测试工作正常。

我认为devtools会在DESCRIPTION的{​​{1}}文件中查找包依赖项,因此会像运行B时那样加载它们,但显然不是。

这是我的require("B")文件:

DESCRIPTION

这是我跑的代码:

Package: B
Type: Package
Title: What the package does (short line)
Version: 0.1.0.1
Date: 2014-08-05
Author: Who wrote it
Maintainer: Who to complain to <yourfault@somewhere.net>
Description: More about what it does (maybe more than one line)
License: What license is it under?
Imports: A

这就是RStudio的devtools::load_all() # or SHFT + CTRL + L in RStudio devtools::test() # or SHFT + CTRL + T in RStudio 窗格给了我的话:

build

我在这里错过了什么吗?

构建工具对话框的屏幕截图:

enter image description here

1 个答案:

答案 0 :(得分:0)

通常的做法是使用roxygen2从源代码中的特殊注释自动生成NAMESPACE文件,但手动维护DESCRIPTION文件。我知道并没有特别的东西让它们保持同步,但是R CMD CHECK会告诉你DESCRIPTION中是否有遗漏/额外的内容。