質問

私は、私はパッケージに私のいくつかのR関数を置くことを決めたと私は<のhref =「http://cran.r-project.org/doc/manuals/R-exts.pdf」学習/読んでいますrel = "nofollowをnoreferrer">ライティングR拡張するます。

これは明らかに私が右やっていないよ、物事の量について文句を言います。

十分なグーグルの後、私はここにいくつかの質問を発射しています。

、これはテストのスタイルについてです:私は<のhref = "http://cran.r-project.org/web/packages/RUnit/vignettesを使用しています/RUnit.pdf」REL = 『nofollowをnoreferrer』> RUNIT とIは、試験されるコードに近い可能としてテストのようなもの。この方法は、私がテストを忘れていないだろうと私は、技術文書の一部としてテストを使用しています。

たとえばます:

fillInTheBlanks <- function(S) {
  ## NA in S are replaced with observed values

  ## accepts a vector possibly holding NA values and returns a vector
  ## where all observed values are carried forward and the first is
  ## carried backward.  cfr na.locf from zoo library.
  L <- !is.na(S)
  c(S[L][1], S[L])[1 + cumsum(L)]
}

test.fillInTheBlanks <- function() {
  checkEquals(fillInTheBlanks(c(1, NA, NA, 2, 3, NA, 4)), c(1, 1, 1, 2, 3, 3, 4))
  checkEquals(fillInTheBlanks(c(1, 2, 3, 4)), c(1, 2, 3, 4))
  checkEquals(fillInTheBlanks(c(NA, NA, 2, 3, NA, 4)), c(2, 2, 2, 3, 3, 4))
}

しかし、問題は、このようなラインを、注意R CMD checkます:

test.fillInTheBlanks: no visible global function definition for
  ‘checkEquals’

と、それは私がテスト機能を文書化していない文句ます。

私は実際にテスト機能のドキュメントを追加したくないと私は間違いなくRUNITパッケージに依存関係を追加する必要がないことを好むだろう。

どのように私はこの問題を見なければならないと思いますか?

役に立ちましたか?

解決

どこでユニットテストを入れていますか?あなたはRディレクトリに入れたくないかもしれません。より標準的なアプローチはinst\unitTests下に置くことです。コンフィギュレーションに関するこのR-wikiページを見てみましょう。

また、あなたはあなたの名前空間にエクスポートされますどのようなファイルを指定することができ、ひいては、どのような機能は、文書化すべきではないはずです。

それ以外にも、理想的にあなたが持っている必要があります。

あなたのテストでは、R CMDチェックが呼び出されたときに実行します。それは、デザインの一部です。その場合、あなたは別のtestsディレクトリにテストを呼び出すためにテストスクリプトを作成する必要があります。そして、あなたはそのスクリプトでRUNITパッケージをロードする必要があります(ただし、あなたがそれあなたのパッケージの依存関係にする必要はありません)。

の編集1:

それはcheckEquals機能を見つけることができませんので、

あなたの失敗について:私はあなたがこのようなことするために機能変更します。

test.fillInTheBlanks <- function() {
  require(RUnit)
  checkEquals(fillInTheBlanks(c(1, NA, NA, 2, 3, NA, 4)), c(1, 1, 1, 2, 3, 3, 4))
  checkEquals(fillInTheBlanks(c(1, 2, 3, 4)), c(1, 2, 3, 4))
  checkEquals(fillInTheBlanks(c(NA, NA, 2, 3, NA, 4)), c(2, 2, 2, 3, 3, 4))
}

関数が呼び出されるか、パッケージが必要であることをユーザーに通知する際にその方法は、パッケージがロードされます。

の編集2:

"ライティングR拡張機能" :

  

パッケージ内のすべてのユーザーレベルのオブジェクトは、文書化されなければならないことに注意してください。パッケージPKGのみ「内部」使用するためのもので、ユーザーレベルのオブジェクトが含まれている場合、それはファイルのpkg-internal.Rdこのようなすべてのオブジェクトを文書化し、明確にこれらがユーザによって呼び出されることを意味するものではないと述べて提供する必要があります。例えば参照してください。例えば、Rの分布のパッケージグリッドのソース。広範囲に内部オブジェクトを使用するパッケージは名前空間でこれらのオブジェクトを非表示にすることに注意してください、彼らは文書化する必要がない場合(パッケージの名前空間を参照してください)。

あなたは一つの選択肢として、PKG-internal.Rdファイルを使用することができますが、あなたは多くの隠されたオブジェクトを持つに予定がある場合、これは通常、名前空間で宣言で処理されます。

他のヒント

あなたはRUnitパッケージをロードしましたか?

あなたの最善の策はRUnitを使用して、既存のコードを含むパッケージを見て、おそらくです。

scroll top