20

testthatテストの実行時に RStudio でデバッガーを呼び出すことはできますか? これを可能にするセットアップを見つけることができませんでした(設定で「利用devtools可能な場合はパッケージ機能を使用する」のさまざまな組み合わせ、「ビルド->詳細」メニューの「パッケージのテスト」オプションを押しtest()、コンソールで実行し、browser()電話をかけるなど)が、まだ方法を見つけていません。

また、実行中のコードがシステム ライブラリにインストールされているか (「ビルドとリロード」を実行して) 、ローカル ディレクトリからin situRで実行されているか、または場合によっては RStudioが実行されているかどうかが不明なため、テスト中に多くのことがわからなくなります。パッケージが再構築されるまでブレークポイントを設定できない(前者を疑う)か、しない(後者を疑う)と不平を言う。この問題が私の主な質問と密接に関連しているかどうかはわかりません。

デバッガーにドロップする方法を見つけられずに、テスト コードをコンソールに貼り付けて、非常にその場しのぎの方法で作業し、基本的に私の TDD の習慣を台無しにしてしまいます。アドバイスをいただければ幸いです - デバッガーを呼び出すことができない場合、推奨される回避策はありますか?

R 3.2.1 を使用して、ローカル モードで OS X で RStudio バージョン 0.99.447 を実行しています。

編集- オプションの背景についても知りたいです。たとえば、「オプション X は、フォークされたプロセスで実行されているため、デバッグをサポートしません。代わりに、この他のオプション Y を試してください。」

更新- ここで応答がなかったので、 https://support.rstudio.com/hc/communities/public/questions/204779797-Debugging-testthat-tests-in-RStudioでも質問しました(どこにも何もありませんでした)。反応)。

4

2 に答える 2

24

以下は私にとってはうまくいきます:

  1. browser()単体テストのテスト内のどこかに呼び出しを挿入します。
  2. RStudio コンソールから実行しますdevtools::test()(UI の [パッケージのテスト] メニュー項目を使用する代わりに)

次に、テスト ランナーが呼び出しに到達すると、環境ブラウザーを使用してコードをステップbrowser()実行できるようになります。

testthat をブレークポイントで停止させる方法は見つかりませんでしたが、browser()呼び出しを挿入することはかなり近い代替手段です。

パッケージのロードに関して一貫した状態から開始していることを確実にするには、RStudio を閉じてから再度開き、「クリーンして再構築」を実行してから、devtools::test()

最後に、RStudio パッケージ内で作業している場合は、RStudio サポートからの次のアドバイスを確認することをお勧めします。

パッケージで効果的にデバッグするには、パッケージが --with-keep.source オプションでコンパイルされていることを確認する必要もあります。このオプションは、RStudio の新しいパッケージのデフォルトです。手動で設定する必要がある場合は、[ツール] -> [プロジェクト オプション] -> [ビルド ツール] で見つけることができます。

于 2015-08-04T01:02:24.700 に答える