.NETでの例による単体テストの技術

osherove_cover 5〜6年前に初めてテストを知ったのは、私のキャリアの始まりに過ぎませんでした。 そして、覚えている、彼らはテストでコードをカバーすることについて私に言った。 さらに、彼らは私にユニットテストを書くように頼みませんでした、彼らは単に言った:「あなたが書いた3つの条件で、これら3つの条件すべてをチェックしなければならないかどうかわかります。」 コードを記述した後、アプリケーションインターフェイスを介した通常のパスでコードを分析し、完​​全にテストする必要があることが理解されました。 どうですか? 時間が経つにつれて、テストに関する私の知識が少し増え、テストを書くための少しを学びました。 私はまだ、 テスト駆動開発(TDD)アプローチを使用して作成されたライブプロジェクトを見たり、参加したりしていません。 私の知識の基礎は、以前のオフィスで同僚がどのようにそれをしたかを覗き、記事(例えば、Alesandra Bendyuには「 初心者のためのTDD。一般的な質問への回答 」)を読んで、いくつかのスプリンクラーを見ました。 私は文盲に終止符を打つことに決め、このトピックに染み込んでいます。そのため、私は.NETの例によるユニットテストの芸術を読みました。 さらに、現在のオフィスには何がありますか? 私は自分のコードに対してのみテストを書くと言うことができます。 モデルになる必要があります。



この本は約1年半前に書かれました。 彼女の例のほとんどはC#で書かれていますが、私は偶然それを選択しませんでした。PHPプログラマーさえお勧めします。 そして、私はこの特定の本を読むための十分な異なる勧告を見たので、非識字に終止符を打つためにそれから始めることにしました。



この本の著者であるRoy Osheroveは有名なブロガーであり 、TDDマスタークラスを率いており、プロジェクトでTDDを使用したいオフィスのコンサルタントとして働いていることもあります(この本では、成功と不成功を挙げてこれについて複数回書いています)方法論の実装例)。 彼はTypemockのチーフアーキテクトとして働いており、より便利なテスト作成とコード分析のための有料ツールを作成しています。



この本は、原則として、あらゆるプラットフォームと言語の開発者にとって有用です。 サンプルでは主にC#を実験言語として使用し(Javaコードがあります)、 NUnitをユニットテスト作成用のフレームワークとして使用し、 Rhino Mocksフレームワークを使用してユニットテストでMockおよびStubオブジェクトを使用します、Mockオブジェクトのみを知っていました)。 他のプラットフォームや言語については、おそらく本に豊富な理論のみを使用することが可能でしょう。 または、プラットフォームに同様のフレームワークがある場合は、自分でそれらに精通し、例のコードをそれらに変換できます。 少なくともMoqフレームワークに精通しているだけですが、Rhino Mocksの構文を理解することは私にとって難しくありませんでした。



それで本は何についてですか? いつものように、 本の公式ウェブサイトでは、本に慣れるためにいくつかの章をダウンロードする機会があります:それがあなたに合うかどうかを評価するために。 私の知る限り、それはロシア語に翻訳されておらず、リリースされてから十分な時間が経過したため、おそらく翻訳されないでしょう。 この本は、他と同様に、「Hello world!」の章から始まります。テストを書くのに必要なこと、どのツール、まあ、最初のテストが書かれています。 さらに、作者が例で使用するフレームワーク、NUnitとRhino Mocksについても簡単に説明します。 私が理解している限り、Rhino Mocksに重点が置かれたのは、著者がブログで統計を収集したことがあるためです。 状況が変わったように見えますが、より人気のあるフレームワークは今も残っています-Moqです。 まあ、NUnitは同じ人気のあるテストフレームワークのままです。 一度にMbUnitに切り替えたのは、より多くの機会があったからですが、現時点ではNUnitが十分に引き上げられ、競合他社に追いついています。



遠くなるほど、本はますます面白くなります。 テストを記述するための原則は十分に詳細に説明され、どのようにフォーマットする必要があるか、そして主なことは、コードですぐに認識したアンチパターンがあることです(改善する必要があり、今どこにあるかがわかりました)。



古い質問への回答も受け取りました。 例としてMbUnitを使用してNHibernateアプリケーションをテストする記事を書いた後、 コメントの 1つを受け取りました。



質問があります。 なんで? ORMをテストする理由 そのため、ORMとのやり取りのすべてが別個のクラス(別個のクラス)に取り出され、IoCコンテナーが使用されます。

ORMで実際にテストしていることは何ですか? マッピング? お問い合わせは?


そこで、私は美しく出たので、それが必要だったように、私はわずかに特定のケースがありました。 理由はわかりませんでしたが、これは私の統合テストです。基本構造がマッピングと一致していること、マッピングがクラスと一致していることを確認します。特別なクエリを使用する場合は、それらもテストします。 複数回保存しました。 一般的に、何に答えるべきかわかりませんでした。 私は私の質問への答えを受け取った本で-これは便利で必要であり、著者はデータアクセス層もテストし、これがなぜであるかを議論します。



テストを正しく作成することに加えて、この本には、オフィスでTDDプラクティスを実装する方法、テストをより効率的に作成する方法、レガシーコードを操作する方法に関する情報が含まれています(これは、既存のプロジェクトにTDDを導入するときに非常に重要です) 。 そして、主なことは、チームにTDDを実装することになったときに答える必要がある最も一般的な質問(時間、お金、知識などに関する質問)への答えです。 私は新しい同僚にこれを何らかの形で説明しようとしましたが、彼らは私にうなずきましたが、議論は強くありませんでした。



また、この本には、テストに役立つ多くのフレームワークの概要があります。 その中にはもちろん、著者が働いているTypemockによって書かれた有料のフレームワークがあります。



この本は、家でTDDを実践し、コードのテストを書いているすべてのオフィス(これは私の場合です)に推奨していますが、一般的にはすべてのオフィスに。 そして、リーダーやマネージャーへの私の推薦は、「テストを書く」とは言わず、自分で本を読むか、従業員に尋ねてからトレーニングを実施すると、すべてが変わります。 私には思えます-これは開発の非常に重要な部分です。 私はすでに多くのテストを書いていますが、この本を読んだ後、もっと正確に、より明確に書くことができることに気付きました。 本には優れた推奨事項が含まれています。 すべての質問への回答が含まれているとは言えません。また、この本にすべての詳細に同意しているとは言えませんが、読む価値はあったと確信しています。



All Articles