質問
単体テストとは、大まかに言うと、コードの一部をテスト コードとは切り離してテストすることです。すぐに思い浮かぶ利点は次のとおりです。
- テストの実行が自動化可能で反復可能になる
- GUI を使用したポイント アンド クリック テストよりもはるかに詳細なレベルでテストできます。
私の質問は、ツールに関する現在の「ベスト プラクティス」と、日常のコーディングの一部として単体テストをいつ、どこで使用するかということです。
ある程度言語に依存せず、すべての基本をカバーできるようにしてみましょう。
他のヒント
見てみるのもいいかもしれません 3 枚のインデックス カードの TDD そして テスト駆動開発の本質を簡単に覚えられる3つのインデックスカード:
カードその1。ボブおじさんの三原則
- 不合格のテストに合格する場合を除き、実稼働コードを作成しないでください。
- 失敗を実証するのに十分なテストのみを記述します。
- テストに合格するのに十分な実稼働コードのみを作成してください。
カード #2:第一原則
- 速い:毎秒数百、数千という、気が遠くなるような速さです。
- 孤立:テストでは障害を明確に切り分けます。
- 再現可能:繰り返し実行でき、毎回同じように成功または失敗します。
- 自己検証:テストには明確に合否が判定されます。
- タイムリーな:わずかなコード変更を加えて段階的に作成されます。
カード #3:TDDの中核
- 赤:テストが失敗する
- 緑:テストに合格しました
- リファクタリング:クリーンなコードとテスト
いわゆる xユニット というフレームワークが広く使われています。元々は Smalltalk 用に SUnit として開発されましたが、Java 用の JUnit に進化し、現在では .Net 用の NUnit など、他の多くの実装があります。これはほぼ事実上の標準です。単体テストを使用していると言うと、他の開発者の大多数は、それが xUnit などのことを意味していると考えるでしょう。
「ベスト プラクティス」に関する優れたリソースは、 Google テスト ブログ, 、たとえば、最近の投稿 テスト可能なコードの作成 素晴らしいリソースです。特に、「トイレでのテスト」シリーズの毎週の投稿は、キューブやトイレの周りに投稿するのに最適なので、いつでもテストのことを考えることができます。
xUnit ファミリは単体テストの中心です。これらは Netbeans、Eclipse、その他多くの IDE に統合されています。これらは、単体テストに対するシンプルで構造化されたソリューションを提供します。
テストを作成するときに私が常に心がけていることの 1 つは、外部コードの使用を最小限に抑えることです。つまり、次のことを意味します。テストのセットアップと分解のコードをできる限り最小限に抑え、他のモジュールやコード ブロックの使用をできるだけ避けるようにしています。適切に記述されたモジュラー コードは、セットアップと分解の際にあまり多くの外部コードを必要としないはずです。
NUnit は、どの .NET 言語でも優れたツールです。
単体テストはさまざまな方法で使用できます。
- テストロジック
- コード単位の分離を増やします。コードの関数またはセクションを完全にテストできない場合は、それを構成する部分が相互に依存しすぎていることになります。
- 開発を推進し、テストを書く人もいる 前に 彼らはテストされるコードを書きます。そのため、コードに何をさせたいのかを考える必要があります。 する, そして、いつそれを達成したかについての明確なガイドラインを示します。
リファクタリングのサポートを忘れないでください。.NET 上の ReSharper は、自動リファクタリングと不足しているコードの迅速な修正を提供します。つまり、存在しないものへの呼び出しを作成すると、ReSharper は不足している部分を作成するかどうかを尋ねます。