2

最近、TDD と BDD についてよく読んだり見たりしているので、本当にマスターしたいと思っています。私はコードを書いて外部からテストするだけの開発者でした (いつものように)。問題は、TDD の起動と実行にあるようです。何かのリストを表示したい単純なWinformアプリを作成したいだけです。どこから始めればよいかわかりません。最初にコントローラーのテストを作成する必要がありますか? コントローラーには、ビューやサービスなどへの参照が必要です。ASP.Net MVC はテスト用に構築されているため、始めるのは少し簡単ですが、Winforms は本当に面倒です。Winforms での TDD を示すビデオ (最優先) を教えてください。

クラスや機能のテストを示すビデオをたくさん見てきましたが、テストをサポートしていない UI をどのようにテストしますか?

要するに、誰かがしばらくの間TDDを行っているかどうかを知りたいのですが、彼/彼女はWinformsでどのようにそれを行っていますか?

行き詰まったので削除するだけのコードをたくさん書いています。助けてください!

4

3 に答える 3

4

Web、Winforms、WPF、JavaのSwing、さらには別のシステムで使用されるWebサービスインターフェイスなど、あらゆる種類のUIに対してこれを行う方法は次のとおりです。

  • UIを記述し、その背後にあるデータをハードコーディングします。
  • コントローラを作成し、ハードコードされたデータをコントローラに移動します。コントローラーは、UIが理解できる形式でデータを表示する必要があります。

これで、コントローラーは動作しなくなりました。静的データだけですが、UIに適したAPIが用意されているので、UIがそれをどのように使用するかがわかります。

  • UIが最も基本的な形式でコントローラーをどのように使用するかを示す例を記述します。
  • 例を機能させます。
  • コントローラーが異なるコンテキストでどのように異なる動作をするかを示す別の例を記述します。
  • 例を機能させます。

これらはあなたのユニットテストです!コントローラがコラボレーションするために他のクラスが必要になることがわかっている場合は、それらをモックアウトすることもできます。

コラボレーターがモックアウトされると、コントローラーがコラボレーターをどのように使用するかがすでにわかります。繰り返しになりますが、コントローラーがそれらを使用しているため、これらの共同作業者用のAPIがすでにあります。

これは、BDDで「アウトサイドイン」について話すときに行っていることです。

于 2013-02-07T19:44:52.380 に答える
3

私もTDDは初めてで、あなたと同じように学ぼうとしています。検索中に思いついたものは次のとおりです。おそらくそれも役立つでしょう。

  1. Roy Osherove の Web サイトと、彼の著書「The Art of Unit Testing」も参照してください。ビデオをチェックしてください。いくつかの素晴らしいビデオがあります。特に「ペア プログラミング」のセクションがそうです。彼の本は、私が単体テストと TDD について読んだ中で最高の本であり、最初から最後まで読んだ唯一の本でした。
  2. いくつかの TDD カタをチェックしてください。前の項目で提案した Web ページにいくつかあります。他の人がカタをどのように解いているかをチェックしてください。本当に助かります。
  3. 依存性注入について読んでください。
  4. WinForms で TDD を使用する場合は、MVP パターンを確認してください。私の知る限り、これは WinForms で UI をビジネス コードから分離するためのデファクト パターンです。

検索頑張ってください。

于 2013-02-09T12:47:28.137 に答える
0

コントローラーは良い出発点です。View パブリック API をインターフェイスに抽出し、Mocking Framework を使用してコントローラーとそのインターフェイスとの相互作用をテストします。サービス層についても同じことができます。また、このアプリケーションではボトムアップ アプローチを採用し、UI レイヤーにテストを追加する前に、下位レベルのレイヤーを単体テストします。UI レイヤーでは、BDD フレームワークを使用して受け入れテストのセットを作成し、モッキング フレームワークを使用してこれらのテストを軽量化し、テストの数を減らします。

幸運を!

于 2013-02-09T12:58:15.233 に答える