似乎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
我在这里错过了什么吗?
构建工具对话框的屏幕截图:
答案 0 :(得分:0)
通常的做法是使用roxygen2
从源代码中的特殊注释自动生成NAMESPACE
文件,但手动维护DESCRIPTION
文件。我知道并没有特别的东西让它们保持同步,但是R CMD CHECK
会告诉你DESCRIPTION
中是否有遗漏/额外的内容。