問題タブ [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 - travis でのテスト中に load() を使用して .RData ファイルからデータをロードする
このパッケージを使用して、testthat
開発中の R パッケージで単体テストを実行しています。何が間違っているのかよくわからないという奇妙な状況に遭遇しました。
いくつかのテストデータ(データフレームに保存されている)といくつかの事前計算された回答(データフレームに保存されている)を読み込んで、いくつかの機能をテストし、結果を比較しようとしています。両方のデータ セットを .Rdata ファイルとして (tests/testthat/ ディレクトリに) 保存し、テストを実行する前にそれらをロードしています。load(file.path('filename.RData'))
コンピューターでテストを実行すると、テストは正常に実行されます。しかし、travis で実行すると、次のエラーが表示されます。
非常に単純なものが欠けていることは確かですが、明白なことをすべて試しました(ディレクトリの先頭からの相対パスを指定するなど)。travisがこれらのファイルをロードできるようにする方法について誰かアイデアがありますか?
問題のある testthat ファイルの内容は次のとおりです。
r - RStudio を使用した Shiny アプリの関数の自動ドキュメント化
現在、Shiny アプリを開発しており、予想以上の機能を備えています。で自動テストを開始する予定でtestthat
、関数を でドキュメント化したいと考えていますroxygen2
。
私は RStudio を使用しているので、新しい光沢のあるアプリ プロジェクトを開始しました。ドキュメンテーションとテストを完了したいので、代わりに RStudioでパッケージdevtools
を開始してすべての機能を取得する必要があるかどうか疑問に思っています。
build
例をテストするために、関数を適切に文書化し、のように取得する方法を考えています。さらに、testthat
関数を使用します。このようなプロジェクトを設定するにはどうすればよいですか?
r - data.table を使用したこの単純なテストが失敗するのはなぜですか? 修正方法は?
パッケージ " hello
" を書くとします...
...単一のエクスポートされた関数を使用:
このパッケージを機能させるために、私も追加します
DESCRIPTION
ファイルに。
ここで、単体テストを書きたいと思います。
...ファイル内tests/testthat/test-hello.R
:
テストを実行すると、失敗します:
どうして??testthat
との間の非互換性の他のケースをグーグルで検索しましたがdata.table
、それらは:=
演算子には関係ありませんでした。そして、彼らはtestthat
パッケージを非難しました。
ここに私のセッション情報があります:
回避策はありますか?私のライブラリは非常に大きなデータセットを扱っているため、を放棄することdata.table
は私にとって選択肢ではありません。
r - R tryCatch with testthat 期待値
私は次の機能を持っています:
これは 内で呼び出され、 内のtryCatch()
エラー条件expr
が適切に処理されるようにします。
標準のエラー状態で正常に動作します。
ただし、期待エラーをキャプチャしませんtestthat
(これは、私の特定のユース ケースに適しています)。
またはもっと簡単に:
予期エラーはキャッチされません。
この問題は、R 3.2.2 から R 3.3.0 にアップグレードした後に発生しました。つまり、期待エラーは R 3.2.2 で正確に検出されました。
R 3.3.0 にtestthat
期待を寄せる方法はありますか?tryCatch()
r - Travis CI にログオンする詳細なテストを読む
Travis CI でテストされているR プロジェクトに取り組んでいます。テストをローカルで実行すると、すべてのテストに合格します。これらのテストを Travis CI で実行すると、一部のテストが失敗します。testthat
問題は、テストの実行後に表示される詳細なエラー メッセージを確認できないことです。
Travis のエラーの「上部」が表示されます。
Travis CI のエラー メッセージの「下部」が表示されません。ここに例を示します。
Travis CI の「下部」を把握できることを期待/希望しています。どこかにログファイルが書かれていると思います/願っていますが、どこにあるのかわかりませんでした。
[編集: これを追加] 以下の出力例のような出力が時々表示されることに注意してください。これは別の質問かもしれませんが、出力のすべての行も見てみたいです。
r - テスト中の readline() による一時停止を避ける
パッケージのtest_dir()
関数を使用してRでテストを実行しています。testthat
一部のテスト スクリプトには、 を呼び出す関数がありreadline()
、対話モードでは、テストを一時停止してユーザー入力を待ちます。関数呼び出しreadline()
は私自身のものではなく、私はそれらに影響を与えません。ユーザー入力は、これらの関数の出力には関係ありません。
テスト中にこれらの一時停止を回避する方法はありますか?
頭に浮かぶアプローチですが、それらを実装する方法はわかりません:
- R の実行中に対話モードを無効にする
testthat
非対話モードでスクリプトを実行するパッケージの別の関数を使用する- なんとか
stdin
端末以外に流用(??) readline()
テストスクリプトから非インタラクティブモードで呼び出され、結果を利用できるようにする別のスクリプトで呼び出す関数をラップします
を使用してコマンド ラインからのみテストRscript
することもできますが、RStudio ワークフローにとどまることをお勧めします。
======
サンプルコード
r - 「ランダムユニット」テスト
テストごとに新しい数値セットで関数をテストしたいと思います。アイデアは、私が予期していなかったインスタンスで失敗を達成することです。
a
問題は、失敗を受け取ったときに、どの値が失敗をb
引き起こしたのかわからないことです。
リバース エンジニアリングによって、特定の操作でこれを実現できますexpect_lte
。
エラー: bad_hypotenuse_length(a, b) は a + b より小さくありません。差: 0.143。a = 1.1 b = 2.35
既存の関数を使用して同様の情報を返す方法はありますか? つまり、 と同じものを返しますが、expect_...
渡された引数の値も含みます。( `testthat`テストが`R`で失敗した場合にカスタム診断情報を印刷するソリューションは、テスト結果に関係なく情報を出力するか、既存のテストに適合しません。)