7

Rには、よく開発された3つの単体テストパッケージ、、、、がRUnitありsvUnitますtestthat。Base Rのパッケージ機能には例が組み込まれており、正しく解析されないとエラーが返されます。

私が信頼している人の意見は、ユニットテストは多くの例を書くよりも優れているということですが、例で再現できないユニットテストの特定の機能に完全に触れることはできません。

Rで単体テストフレームワークを使用することのどの機能が、パッケージ例を使用したアドホックの同等のフレームワークよりも優れていますか?

Rの世界以外の人は、パッケージがビルドされるたびにパッケージ内のすべての関数の例が実行され、プログラマーは警告やエラーに悩まされることに注意してください。

4

5 に答える 5

10

単体テストフレームワークを使用すると、エンドユーザーに例として公開したくないあらゆる種類のものをテストできます。

  • 関数は間違った入力で正しいエラーをスローしますか?単体テストフレームワークがエラーをキャッチし、テストに合格します。
  • 単体テストは、コードの非常に高いカバレッジを取得することを目的とする必要があります。すべての入力引数のすべての組み合わせをテストすることをお勧めします。

単体テストフレームワークのもう1つの利点は、速度です。

  • たとえば、特定のファイルでテストを選択的に実行できます。対照的に、パッケージの出力によっては、パッケージ全体をビルドしてチェックする必要があることを意味します。
  • これにより、エラーの特定と開発サイクルが大幅に短縮されます。

私の典型的なパッケージには、数百とは言わないまでも数十のテストが含まれていますが、パッケージの内容を実際に示す例はほんのわずかです。

要約すると、私はテストをテストに使用し、例を使用して教育と支援を行います。

于 2013-01-27T13:21:31.287 に答える
3

もちろん、どの種類の例があるかによって異なりますが、おそらく例はコードを使用しない方法を示していません。ユニットテストは、ネガティブな場合の動作をテストすることもできます。

単体テストはおそらく小さな部品をテストするため、より単純な機能をテストします。フレームワークを使用するテストは、通常、コードが変更されるたびに自動的に実行できます。例を常に実行している誰かに依存している場合、遅かれ早かれ、それらはある重要な瞬間に忘れられます。

于 2013-01-27T13:20:02.860 に答える
2

テストの明らかな違いの1つは、テストが開発サイクルの一部になる可能性があることです。テスト駆動開発TDDでは、各新機能はテストの作成から始まります。

ここではTDDの概念について詳しく説明しません(一般性は嫌いで、このトピックは文献で十分に開発されていると思います)。ただし、次に実装する機能の失敗テストを作成してコーディングのセッションを常に終了すると、次のようになります。開発を継続したいときに、中断したところから再開するのが簡単です。

于 2013-01-27T15:55:14.500 に答える
1

単体テストの実行は通常、完全に自動化されているため、手動テストよりもはるかに安価に実行できます(開発者の時間が短縮されます)。もちろん、それらを書くのに時間がかかりますが、通常、後で手動テストに費やされるよりも短い時間です。

チームで開発を行う場合は、通常、サーバー上に自動ビルドを作成して、すべての新しいコードが何も壊さないようにすることもできます。これは、実際の人間との対話なしでテストを実行した場合にも可能になります。

于 2013-01-27T13:19:24.497 に答える
0

単体テストの利点は、1つの赤または緑の答えが出てくることです。結果を調べて、すべてが期待どおりに機能しているかどうかを確認する必要はありません。

于 2013-01-27T13:08:18.093 に答える