タグ付けされた質問 「tdd」

テスト駆動開発(TDD)では、失敗する自動テストを記述して、何を構築するかを指定します。次に、テストされた条件を満たすコードを記述して、テストに合格します。最後に、コードがリファクタリングされます。

9
ジャスミンで値が「以上」であることをどのようにテストできますか?
数がゼロ以上でなければならないので、私は、値は、小数点(または0)であることを確認したいと 1未満です。 describe('percent',function(){ it('should be a decimal', function() { var percent = insights.percent; expect(percent).toBeGreaterThan(0); expect(percent).toBeLessThan(1); }); }); 「> = 0」を模倣するにはどうすればよいですか?

17
単体テストをどのように単体テストしますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 2年前休業。 この質問を改善する 私はMVCStoreFrontアプリでRob ConnerysのWebキャストを見ていて、彼が次のような日常的なものでさえもユニットテストしていることに気付きました。 public Decimal DiscountPrice { get { return this.Price - this.Discount; } } 次のようなテストがあります: [TestMethod] public void Test_DiscountPrice { Product p = new Product(); p.Price = 100; p.Discount = 20; Assert.IsEqual(p.DiscountPrice,80); } 私はすべてユニットテストを担当していますが、この形式のテストの最初の開発が実際に有益であるかどうか疑問に思うことがあります。たとえば、実際のプロセスでは、コード(ビジネスリクエスト、要件ドキュメント、アーキテクチャドキュメント)の上に3〜4層あります。 、実際に定義されたビジネスルール(割引価格は価格-割引)が誤って定義されている可能性があります。 それが状況である場合、単体テストは何の意味もありません。 さらに、ユニットテストは別の障害点です。 [TestMethod] public void Test_DiscountPrice { Product p = new …
89 tdd  agile  test-first 

17
単体テストの深さはどれくらいですか?
ロックされています。この質問とトピックへの回答はロックされています。質問はトピックから外れていますが、歴史的に重要です。現在、新しい回答や相互作用を受け入れていません。 TDDについて私が見つけたのは、テストをセットアップするのに時間がかかることと、自然に怠惰であることです。私が最初に行うことは、コンストラクターがすべてのプロパティを設定したことをテストすることですが、これはやりすぎですか? 私の質問は、ユニットテストをどの程度の粒度で作成することですか。 ..そして、テストしすぎるケースはありますか?
88 unit-testing  tdd 

7
C#とRhinoMocksを使用したテスト駆動開発のベストプラクティス[終了]
現在のところ、この質問は私たちのQ&A形式には適していません。回答は事実、参考資料、または専門知識によって裏付けられることを期待していますが、この質問は、討論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善して再開できると思われる場合は、ヘルプセンターにアクセスしてガイダンスを入手してください。 8年前に閉鎖されました。 チームがテスト可能なコードを作成できるようにするために、C#コードベースをよりテストしやすくするためのベストプラクティスの簡単なリストを作成しました。(いくつかのポイントは、C#のモックフレームワークであるRhino Mocksの制限に言及していますが、ルールはより一般的に適用される場合もあります。)従うベストプラクティスはありますか? コードのテスト容易性を最大化するには、次のルールに従います。 最初にテストを記述し、次にコードを記述します。理由:これにより、テスト可能なコードを記述し、コードのすべての行でテストが記述されるようになります。 依存性注入を使用してクラスを設計します。理由:見えないものをモックしたりテストしたりすることはできません。 Model-View-ControllerまたはModel-View-Presenterを使用して、UIコードをその動作から分離します。理由:テストできない部分(UI)を最小限に抑えながら、ビジネスロジックをテストできるようにします。 静的メソッドまたはクラスを記述しないでください。 理由:静的メソッドを分離することは困難または不可能であり、RhinoMocksはそれらをモックすることができません。 クラスではなく、インターフェイスをプログラムします。理由:インターフェースを使用すると、オブジェクト間の関係が明確になります。インターフェイスは、オブジェクトがその環境から必要とするサービスを定義する必要があります。また、RhinoMocksやその他のモックフレームワークを使用してインターフェイスを簡単にモックすることができます。 外部の依存関係を分離します。理由:未解決の外部依存関係はテストできません。 モックするメソッドを仮想としてマークします。理由:RhinoMocksは非仮想メソッドをモックできません。


12
プライベート/保護されたメソッドを単体テストする必要がありますか?
TDD開発では、通常、最初に行うことは、インターフェイスを作成してから、そのインターフェイスに対する単体テストの作成を開始することです。TDDプロセスを進めると、インターフェイスを実装するクラスが作成され、ある時点で単体テストに合格することになります。 ここで私の質問は、インターフェイスによって公開されるメソッド/プロパティをサポートするためにクラスに記述しなければならない可能性のあるプライベートメソッドと保護されたメソッドについてです。 クラスのプライベートメソッドには独自の単体テストが必要ですか? クラス内の保護されたメソッドには、独自の単体テストが必要ですか? 私の考え: 特に私はインターフェースにコーディングしているので、保護された/プライベートなメソッドはブラックボックスなので心配する必要はありません。 私はインターフェースを使用しているので、定義されたコントラクトがインターフェースを実装するさまざまなクラスによって適切に実装されていることを検証するための単体テストを作成しています。したがって、プライベート/保護されたメソッドについて心配する必要はなく、それらを呼び出す単体テストを介して実行する必要があります。インターフェイスによって定義されたメソッド/プロパティ。 コードカバレッジでプロテクト/プライベートメソッドがヒットしていることが示されない場合は、適切な単体テストがないか、使用されていないため削除する必要のあるコードがあります。
82 unit-testing  tdd 

5
インデックス付きプロパティをMOQする方法
インデックス付きプロパティへの呼び出しをモックしようとしています。つまり、私は以下をmoqしたいと思います: object result = myDictionaryCollection["SomeKeyValue"]; また、セッター値 myDictionaryCollection["SomeKeyValue"] = myNewValue; アプリが使用するクラスの機能をモックする必要があるため、これを行っています。 誰かがMOQでこれを行う方法を知っていますか?私は以下のバリエーションを試しました: Dictionary<string, object> MyContainer = new Dictionary<string, object>(); mock.ExpectGet<object>( p => p[It.IsAny<string>()]).Returns(MyContainer[(string s)]); しかし、それはコンパイルされません。 私がMOQで達成しようとしていることは可能ですか?誰かが私がこれを行う方法の例を持っていますか?
82 c#  tdd  mocking  moq 

8
インターフェイスなしでクラスをモックするにはどうすればよいですか?
私はWindows7でC#を使用して.NET4.0に取り組んでいます。 モックを使っていくつかのメソッド間の通信をテストしたいと思います。唯一の問題は、インターフェースを実装せずにやりたいということです。それは可能ですか? モックオブジェクトに関する多くのトピックといくつかのチュートリアルを読んだだけですが、それらはすべて、クラスではなく、インターフェイスをモックするために使用されていました。RhinoとMoqのフレームワークを使おうとしました。
82 c#  mocking  tdd 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.