推奨されているように、 lubridate
テストはtests/testthat
ます。 ドキュメントから、手動でテストを実行するには、 test_check
を使用する必要があると推測されますが、失敗します。
> test_check("lubridate")
Error: No tests found for lubridate
紛らわしいことにtest_package("lubridate")
機能します。
test_check()
対話的に実行すべきではない、それは作業ディレクトリがあることを想定していtests/
それが実行されているときのようにR CMD check
。 test_package(X)
は、インストールされたテストのみを実行するため、実際にはインタラクティブに実行するべきではありません。したがって、それらを変更したがインストールしていない場合は、古くなっています。
開発中にテストを実行する場合、推奨される方法はdevtools::test()
(または対応するRstudioボタン)です。
test_check()はインタラクティブに実行するべきではありません。RCMDチェックを実行するときのように、作業ディレクトリがtests /であると想定します。 test_package(X)は、インストールされたテストのみを実行するため、実際にはインタラクティブに実行するべきではありません。したがって、テストを変更したがインストールしていない場合は、古くなっています。
これは、ドキュメントに記載するのに適した説明です。 私はこれを忘れて、今から半年後に同じバグを開くでしょう。
開発中にテストを実行する場合は、devtools :: test()(または対応するRstudioボタン)をお勧めします。
別のパッケージを使用してtestthat
テストを実行することは意味がありません。 これが「デザイン」である場合は、これもドキュメントに追加してください。
テストの実行は簡単です。 パッケージをインストールせずにRコードを確実にロードするのは難しいです。 したがって、パッケージをインストールしてtest_package()
でテストを実行するか、 devtools::test()
ます。
パッケージをインストールせずにRコードをロードするのは難しい
この問題の理由は、ロードせずに実行できるかどうかではなく、紛らわしく不完全なドキュメントに関するものです。 現在のドキュメントには次のように書かれています。
Use ‘test_package’ to test an installed package, or in
‘tests/test-all.R’ if you're using the older ‘inst/tests’
convention.
If your tests live in ‘tests/testthat’ (preferred) use
‘test_check’ in ‘tests/testthat.R’. You still use ‘test_package’
when testing the installed package.
最初のパラグラフのor
はどういう意味ですか? 2番目のパラグラフの最後の文は、インストールされていないパッケージにはtest_check
を使用する必要があることを示しています。
これらの2つの段落は混乱を招き、おそらく正しくないことに同意していただければ幸いです。 私が前に言ったように、私は漠然とそれらのラインから推測することができることを唯一の結論は、私が実行します(インストールパッケージに)それであるtest_check
新しいスタイルにし、 test_package
ディレクトリの古いスタイルに。
上記に関連するかもしれない/関連しないかもしれないこれに遭遇する将来の人々のために:
pkgname.Rcheck
がpkgname
より上のレベルにまだ存在しているときに、この問題が発生しました。 以前にテストなしでパッケージをチェックしたことがありますが、チェックの1つを強制終了したと思われるため、 pkgname.Rcheck
まだ存在していました。
パッケージディレクトリでこれを実行することをお勧めします。
pkg_name = read.dcf("DESCRIPTION")[, "Package"]
unlink(file.path("..", paste0(pkg_name, ".Rcheck")))
ただし、より堅牢なアプローチとしてhere::here()
を使用することもできます。
library(here)
pkg_name = read.dcf("DESCRIPTION")[, "Package"]
unlink(here("..", paste0(pkg_name, ".Rcheck")))
ドキュメントがあいまいであることに同意します。 すべてのテストを実行する正しい方法がdevtools::tests()
を使用することであるという難しい方法を学ばなければなりません
「ディレクトリ内のテストのコレクションにはtest_dir()を使用します。コンソールでインタラクティブにtest_package()を使用し、R CMDチェック内でtest_check()を使用します。」
devtools
を使用してテストを実行することについては言及されていません。
最も参考になるコメント
ドキュメントがあいまいであることに同意します。 すべてのテストを実行する正しい方法が
devtools::tests()
を使用することであるという難しい方法を学ばなければなりませんdevtools
を使用してテストを実行することについては言及されていません。