問題タブ [testthat]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - ~/.Rprofile が原因で、check() では testthat エラーが発生しますが、test() ではエラーが発生しませんか?
編集:
~/.Rprofile
内にロードされていない可能性はありますかcheck()
。~/.Rprofile
がロードされていないため、プロセス全体が失敗したようです。
編集完了
の自動テストで奇妙な問題が発生しましたtestthat
。実際、パッケージをテストすると、test()
すべて正常に動作します。しかし、テストするとcheck()
エラーメッセージが表示されます。
エラーメッセージには次のように記載されています。
このエラーの前に、変数を定義するスクリプトを入手しました。subfolder_prefix
これが、この場合に機能する理由だと思いますtest()
。check()
しかし、私はこれを関数でも実行することを期待していました。
完全なテスト スクリプトをここに投稿します。複雑でないことを願っています。
私のスクリプトでは、変数を定義しsubfolder_prefix <- 'IC_'
、テスト内で、生ファイルごとに同じ数のフォルダーが作成されているかどうかを確認します...これが私のスクリプトが行うべきことです...
私が言ったように、私はここでこの問題をデバッグする方法がわかりませtest()
んcheck()
。
r - roxygen2 の例から testthat の単体テストを自動的に生成できますか?
私は R の PKNCA パッケージに取り組んでいます。テスト コードを開発している間、いくつかのテストも良い例になります。それらを両方(テストと例)として保持したい。テストにコピーされる roxygen2 ドキュメント内に何かを埋め込む方法はありますか?
私が考えているのは、次のようなドキュメントです。
そして、それは次のようなテストを生成します:
(tol は、それが数字であり、例に示されている桁数であるという事実から来ています。)
r - testthat テストでパッケージをロードするための推奨される方法は何ですか?
「 dplyr バックエンドをアタッチしないでください」というコミットで、Hadley Wickham はロードされたパッケージから直接関数呼び出しを削除しました。おそらく、パッケージが直接ロードされないようにするために、彼は関数呼び出しを の形式に変更しましたpackagename::function()
。
パッケージのテストに関する彼の本の章では、これについての兆候は見つかりませんでした。
めったに使用しない機能については、この形式で呼び出しますpackagename::function()
。しかし、dplyr (magrittr) パッケージの連鎖演算子など、頻繁に使用する傾向があるパッケージについては疑問に思っています。これらのパッケージ
- にロードされ
tests/test-that.R
、 - または の下の各テスト ファイルで
tests/testthat/test-file.r
、 - または、ファイルで指定されているように、パッケージの必要なインポートを介してインポートする必要があり
DESCRIPTION
ますか?
r - test_that で match.fun を使用すると、2 レベル深く使用すると予期しないエラーがスローされる
whenをネストされた関数内で使用match.fun
すると問題が発生します。説明のために、2 つの関数を含む簡単なおもちゃの例 R パッケージを作成しました。後者は単に前者を呼び出します:test_that
match.fun
次にtestthat
、次のようにテストを作成しました。
最初のテストは問題ありませんが、2 番目のテストでエラーが発生します。からの出力testthat
は
最初のテストはパスするのに 2 番目のテストが失敗する理由がわかりません。実際、失敗したテストをコンソールから直接実行すると問題なく動作します。
match.fun
環境と関係があることは知っていますが、2 つの環境を検索した後にこれが機能することを期待していました。ここで何が欠けているか分かりますか?助けてくれてありがとう。
r - 条件が満たされない場合にテストするすべてのテストをスキップする
testthat/devtools インフラストラクチャを使用しているときに、R パッケージの test ディレクトリにあるすべてのテストをスキップする適切な方法は何ですか? たとえば、データベースへの接続がなく、すべてのテストがその接続に依存している場合skip
、すべてのファイルに個別にa を書き込む必要がありますskip
か?
次のような標準パッケージのセットアップがあります
mypackage/
- ... # その他のパッケージ
- テスト/
- testthat.R
- テストする/
- test-thing1.R
- test-thing2.R
testthat.R
最初は、次のようなファイルにテストを入れることができると思いました
しかし、それは機能せず、呼び出しdevtools::test()
はそのファイルを無視するようです。すべてのテストを別のディレクトリに保存するという代替策があると思いますが、より良い解決策はありますか?
r - R: How to test a function that relies on an external program using testthat?
I have a function bowtieIndex(bowtieBuildLocation, filename)
that calls bowtie2-build. It's parameters are the bowtie2-build location on my system and the output filename.
How do I write a test for this function without hard-coding the bowtie2-build location?
regex - testthatを使用して未知の順序で複数の警告をテストする方法は?
警告の順序が異なる場合に、関数が複数の警告 (4 つ以上) を生成することをテストしたいと考えています。これを行うための私の最善の試みは、先読みの RegExp マッチングに基づいています。2 つの警告に単純化すると、次の両方が当てはまるため、RegExp が単一の文字列出力で機能することがわかります。
ただし、複数の警告をテストする場合、これは機能しませんtesthat::expect_warning
これは、の内部がexpect_warning
、指定された RegExp を各警告に対して個別にテストするようなことを行っているためだと思われます。なぜexpect_warning( ... all=TRUE )
パラメーターが意味を持つのか.
残念ながら、これは"1 | 2"
;のような RegExp では使用できません。これは、警告が 1 つだけ出された場合に成功します。
また、関数を複数回実行して、毎回異なる警告をテストすることも避けたいと考えています。実際の機能をテストするには、大量のセットアップおよび分解コードが必要です。これはファイル システムと頻繁に相互作用します。これは、私がテストしているファイル システムの警告であるため、それをあざけることはできません。さらに、複数の状況で警告をテストしたいのですが、それぞれが異なるセットアップと分解コードを必要とするため、テストがすぐに肥大化します。
複数の警告を簡単に一度にテストする方法について何か提案はありますか?