2

実際の質問

単体テストを実行する前にdevtools::test()、パッケージのファイルに記載されているパッケージの依存関係が読み込まれていることを確認していないようです。DESCRIPTIONどうすればそれを変更できますか?

詳細

B別のパッケージ ( ) をインポートするパッケージ ( ) を作成していますA

devtools::test()、またはより正確にはRStudioのショートカットを介して単体テストを実行しようとするSHFT + CRTL + Tと、インポートされたパッケージが無視されている/読み込まれていないように見え、特定の関数(isPackageInstalled)が見つからないため、特定のテストが失敗します。

実行する前にインポートしたパッケージAを手動でロードしようとしても役に立ちませんでした。これは、 (または) 新鮮なワークスペースの状態を「シミュレート」するという事実によるものだと思いますか? ただし、事前にパッケージを手動でロードした後、単体テストを「1つずつ」実行すると問題なく動作します。devtools::test()devtoolstestthatA

devtools は のDESCRIPTIONファイルでパッケージの依存関係を検索し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

実行したコードは次のとおりです。

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

ここで何か不足していますか?

ビルド ツール ダイアログのスクリーンショット:

ここに画像の説明を入力

4

1 に答える 1

0

通常のアプローチは、ソース コード内の特別なコメントからファイルroxygen2を自動的に生成するために使用しますが、ファイルは手動で維持します。それらを同期させるために私が知っている特別なものはありませんが、.NAMESPACEDESCRIPTIONR CMD CHECKDESCRIPTION

于 2015-10-23T14:48:48.460 に答える