46

パッケージの自動テストにHadley の testthat ベースのアプローチを使用しています。

このアプローチでは、tests/testthat 内のテスト スクリプトによってのみ使用され、R/ 内の他の関数によっては使用されないファイルであるテスト データ ファイルを配置するのに最も適した場所はどこですか?

私の現在のアプローチは、それらを に配置しtests/testdataread.tableそこから system.file ではなく相対パスを使用することです (テストを実行するためにパッケージをインストールする必要がないようにするため)。

これを行う標準的な方法はありますか?

4

4 に答える 4

0

私も同じ問題を抱えていました。私はgithub.com/r-lib/devtoolsに提出し、開発者の 1 人 (Jenny Bryan) がこれを手伝ってくれました!

解決策は、テスト用のすべてのデータを「tests/testthat」またはそのサブディレクトリに配置することです。テストでは、testthat::test_path() を使用してパスを提供できます。このアプローチを使用すると、テストはインタラクティブに、そして R-CMD-CHECK または devtools::check()! の両方で機能します

例:

パッケージ構造

└──pkg_name/
    ├── DESCRIPTION
    ...
    └── tests/
        ├── testthat.R
        └── testthat/
            ├── test-some_function.R
            └── testdata
                ├── file_1.csv
                └── file_2.tif

test-some_function.R

test_that("testname", {
  expect_equal(
    some_function(
      test_path("testdata", "file_2.tif")
      ),
    ...
  )
})
于 2022-03-03T09:25:53.440 に答える