問題タブ [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.

0 投票する
1 に答える
5034 参照

r - R CMD チェック用に testthat をセットアップするには?

と統合するには明らかに 2 つの方法がありtestthatますR CMD check。私はどちらも働くことができません。

アプローチ #1: (おそらく非推奨)

devtools wikiによると:

パッケージを開発するときは、テストを inst/tests に置き、次のコードを含むファイル tests/run-all.R (大文字の R でなければならないことに注意してください) を作成します。

これにより、パッケージの名前空間でテストが評価され (エクスポートされていない関数をテストできるようになります)、テストの失敗がある場合はエラーがスローされます。これは、テストの失敗の完全なレポートが表示され、すべてのテストに合格しない限り R CMD チェックに合格しないことを意味します。

パッケージ全体はこちら. その中には、次の 2 つのファイルがあります。

私の説明は

パッケージをインストールした後、テストを問題なく実行できます (予想どおり失敗します)。

しかし、R CMD checkテストは実行されません。

PDF の警告がこれと関係があるとは思いませんが、要求があれば詳細を提供できます。

アプローチ #2: (ブリーディング エッジ)

リポジトリのREADMEファイルにtestthatよると:

ここで、tests/testthat にテストを配置し、次のコードを tests/test-all.R に配置して R CMD チェックが確実に実行されるようにすることをお勧めします。

そのため、testthat の最新バージョンがインストールされていることを確認しました。

そして、パッケージを変更しました。このバージョンはこちらから入手できます。2つのファイルを次のように変更しました

次に、DESCRIPTION ファイルでパッケージのバージョンを 0.1.2 に更新すると、ビルドしてインストールし、testthatチェックして以前と同じ出力を得ることができます。したがって、testthat関係する限り、その作業のようです。

ただし、R CMD チェックはまだテストを実行しません。

だから質問:

私は何を間違っていますか?私の好みはアプローチ 2 の解決策ですが、いずれかを採用します。

0 投票する
2 に答える
310 参照

r - 保存された R オブジェクトに対するテスト

オブジェクトを .rds または .rda として保存するテストを記述して、将来のテスト実行でコード実行の結果と保存されたオブジェクトを比較できるようにする簡単なワークフローはありますか? これにより、やや複雑な値を返す関数が正常に動作していることを簡単に確認できます。

たとえば、次のようなものです。

これは、*extdata/test_obj.res.rds* が存在しない場合、上から *inst/extdata/test_obj.res.rds* に作成されますが、res存在する場合は、identical/all.equal などになります。 . rds から復元されたオブジェクトを含む、新しく生成されたオブジェクト。

私はそのようなテストが非常に便利だと思います.RUnit / svUnit / testthatがそのようなものを実装していないことに少し驚いています.

testthat::make_expectationは近いですが、テキスト表現をコピーしてファイルに貼り付けるよりも、自動化されたストア/取得 rds を使用することをお勧めしますtestthat::make_expectation。 R ファイルですが、それでもプロセスを容易にする自動化が少しあります)。

0 投票する
1 に答える
697 参照

r - Roxygen と testthat を使用して、R CMD チェック中に呼び出されるテストケースで内部ヘルパー関数を使用できるようにする適切な方法は何ですか?

R パッケージを作成していますが、1 つのファイル内のロジックの一部を、同じファイル内で定義する内部ヘルパー関数に分割すると便利であることがわかりました。関数が を介して使用するヘルパー関数を決定する特殊なケースがありますmatch.fun()。それらは他の機能や人々にとって役に立たないので、これらを別のファイルに入れたくないし、エクスポートしたくありません。

を使用して合格するすべてのテストケースtest_dir()。これらの関数をエクスポートしないと、R CMD チェック中にテストが失敗します。

この投稿を見た後、エクスポート エントリを NAMESPACE に明示的にエクスポートまたは追加すると、動作させることができますが、これらをエクスポートしたくありません。

これを行うためのより良い方法はありますか?エクスポートする必要はありませんか? match.fun()(問題の原因は、実行時に関数を呼び出す他の方法である可能性があり、またその可能性があることを認めます。)

0 投票する
1 に答える
955 参照

r - R: ローカル環境内での testthat test_file() の問題

ローカル環境内での test_file の呼び出しに問題があります。

正常に動作します。

正常に動作します。

エラー: オブジェクト 'newvar' が見つかりません

simple.test.R の内容は次のとおりです。

助けてください!ありがとう。


編集:

私がやろうとしているのは、shinyAce ( https://github.com/trestletech/shinyAce ) からいくつかのコードを読み取り、それが有効であることを確認することです (いくつかの定義された要件を満たしています)。'local()' を使用して、shinyAce ブロックで定義された割り当てられた変数が環境に残らないようにしました。

0 投票する
1 に答える
976 参照

r - testthat: 警告と値の両方を処理する

警告を生成するが値を返す呼び出しを処理する最良の方法は何ですか?

例えば

log(-1) への呼び出しが (a) 警告を生成し、(b) 値 NaN を返すようにテストを記述したいと考えています。上記の方法は機能しますが、下部に「警告メッセージ:」が表示されると、混乱する可能性があります。警告を一時的に抑制する必要がありますか?

0 投票する
0 に答える
148 参照

r - test_package がパスしても auto_test_package がエラーをスローする

を使用して R パッケージのテストを作成しようとしていますtestthattestthatとの両方devtoolsが を使用してインストールされinstall_github、テスト コードは と にありtests/testthatます。R CMDチェックを使用して取得test-all.Rtests

  • テストをチェックしています ... 'test-all.R' を実行しています OK

>test()
FASTIN のテスト中
FASTIN IO テストのロード中
: ......

同様に

> test_package('FASTIN')
IO テスト : ......

私の最初のテストの経験に非常に満足しており、今後の開発を「auto_test_package」で自動監視したいと思いましたが、パッケージのルート ディレクトリから 9it を呼び出すと、次の結果が得られます。

>auto_test_package('./')
IO テスト: ......
ダイジェストのエラー (パス、ファイル = TRUE): 指定されたパス名はファイルではありません: /Users/phil/Work/FASTIN-R/FASTIN-R /tests/testthat

これは、テストが実行されることを意味していると思いますが、テストが完了すると何か問題が発生しますか? これを手動で設定しようとするとauto_test、同じエラーが発生します。

>auto_test('./R/', './tests/')
IO テスト: ......
ダイジェストのエラー (パス、ファイル = TRUE): 指定されたパス名はファイルではありません: /Users/phil/仕事/FASTIN-R/FASTIN-R/tests/testthat

auto_test代わりに使用するように設定しようとしましtest/testthatたが、今回はテストは実行されますが、エラーもスローされます...

auto_test('./R/','./tests/testthat/')
IO テスト : 12
1. エラー: SI インポートは正常に動作します -------------------- -------------------------------------------------- --------------------
nchar(SI.predators) > 0 & nchar(SI.preys) > 0 は TRUE ではありません
1: addSI(SI.predators = SI.捕食者、SI.preys = SI.preys、Frac.Coeffs.mean = Frac.Coeffs.mean、Frac.Coeffs.var = Frac.Coeffs.var) test_io.R:10
2: stopifnot(nchar(SI.predators) > 0 & nchar(SI.preys) > 0) at /Users/phil/Work/FASTIN-R/FASTIN-R/R/DataIO.R:56
3: stop(sprintf(ngettext(length(r), "% s is not TRUE", "%s are not all TRUE"), ch), call. = FALSE, domain = NA)

ここで何が間違っていますか?私は少し困惑しており、testthatgithub のコードですぐに答えが見つかりませんでした...

どんな助けでも大歓迎です!乾杯

0 投票する
1 に答える
661 参照

r - r devtools test() エラーですが、testthat test_file() は機能します

私が構築しているパッケージには、アナリストが使用するグローバル環境に 16 進コードを割り当てる機能があります...

私の単体テストコードは次のとおりです。

コードを手動で実行すると、エラーは発生しません。

test_file() を実行してもエラーにはなりません

ただし、devtools ワークフローの一部としてテストを実行すると、次のようになります。

なぜこれが起こっているのか、どうすれば状況を解決できるのか、誰にもアイデアがありますか?

0 投票する
4 に答える
2418 参照

r - テストにexpect_no_warnings()のようなものはありますか?

ある条件下で警告を生成する関数のテストを書いています。他の条件下では警告が生成されないようにしたいと考えています。で簡単にテストする明白な方法がわかりませんtestthat。私は次のようなことができると思います:

またはを使用options(warn=2)しますが、次のようなものがあることを望んでいました:

明らかな何かが欠けていますか?

0 投票する
1 に答える
601 参照

r - test_file() は機能しますが、test() は data.table で失敗します

私の質問はr devtools test() errors but testthat test_file() worksに似ていますが、@hadley のコメントがここにも当てはまるかどうかはわかりません。

個々のファイルのテストは機能しますが、パッケージtestthat::test_fileのテストは機能しdevtools::testません。

これが私のパッケージの唯一のRファイルですR/a.R:

ここに私のテストファイルがありますinst/tests/test-a.R:

を実行するとそのテストに合格しますがtest_file、実行するdevtools::testと次のエラーが表示されます。

それは適切な動作ですか、それともまたはのバグと見なす必要がありますdata.tabledevtools?

ここに私の環境があります:

更新しますdata.table hereに正しく依存するようにパッケージの依存関係を更新しましたが、問題はまだ存在します。