簡體   English   中英

如何使devtools :: test()考慮包依賴關系

[英]How to make devtools::test() consider package dependencies

實際問題

好像devtools::test()不能確保在運行單元測試之前先加載了軟件包的DESCRIPTION文件中所述的軟件包依賴關系。 我該如何改變?

細節

我正在編寫一個程序包( B ),該程序包將導入我的另一個程序包( A )。

當我嘗試通過devtools::test()或更確切地說通過RStudio中的SHFT + CRTL + T快捷方式運行單元測試時,某些測試失敗,因為導入的軟件包似乎被忽略/未加載,因此找不到某些功能( isPackageInstalled )。

運行devtools::test() 之前嘗試手動加載導入的程序包A也無濟於事。 我猜這是由於devtools (或testthat )“模擬”了新的工作區狀態造成的? 不過,在事先手動加載程序包A之后,“一個一個地”運行單元測試就可以了。

我以為devtools會在BDESCRIPTION文件中查找程序包依賴關系,然后像運行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

這是我運行的代碼:

devtools::load_all()  # or SHFT + CTRL + L in RStudio
devtools::test()      # or SHFT + CTRL + T in RStudio

這就是RStudio的build窗格給我的:

==> devtools::test()

Loading required package: testthat
Testing B
Loading B
Creating a new generic function for 'signalCondition' in package 'B'
package : 1
package : ......


1. Error: getPackageDescription ------------------------------------------------
could not find function "isPackageInstalled"
1: expect_is(res <- getPackageDescription(), expected) at test-getPackageDescription.r:13
2: expect_that(object, is_a(class), info, label)
3: condition(object)
4: paste0(class(x), collapse = ", ")
5: getPackageDescription()
6: getPackageDescription() at Q:\home\wsp\rapp2\B/R/getPackageDescription.r:37
7: getPackageDescription(from = from, fields = fields, drop = drop, encoding = encoding, 
       ...) at Q:\home\wsp\rapp2\B/R/getPackageDescription.r:154
8: getPackageDescription(from = from, fields = fields, drop = drop, encoding = encoding, 
       ...) at Q:\home\wsp\rapp2\B/R/getPackageDescription.r:37

我在這里想念什么嗎?

生成工具對話框的屏幕截圖:

在此處輸入圖片說明

通常的方法是使用roxygen2從源代碼中的特殊注釋自動生成NAMESPACE文件,但手動維護DESCRIPTION文件。 我知道沒有什么特別的東西可以使它們保持同步,但是R CMD CHECK會告訴您DESCRIPTION是否缺少/多余的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM