2012-02-27 10 views
0

アレンジ・メソッドの使用アサートの対象をアサートします。これは自分のデータベースの統合テストであると考えていますか?統合テストでのアレンジ・アサート・アサート・パターンの使用

private void Delete_Release_Test_Data(string conString) 
     { 
      UnitTestHelper.PrepareData(new[] { "ReleaseId" }, new object[] { 100 }); 
      UnitTestHelper.InsertPreparedData(conString, RELEASE_TABLE); 
     } 

     [Test] 
     public void Delete_Release(string conString) 
     { 
      Delete_Release_Test_Data(conString); 

      // ARRANGE 
      // What should I put here ??? 

      // ACT 
      IReleaseDataProvider provider = new ReleaseDataProvider(); 
      provider.DeleteRelease(100); 

      // ASSERT 
      Assert.IsTrue(UnitTestHelper.HasNoData(conString, string.Format("SELECT * FROM {0}", RELEASE_TABLE))); 
     } 

答えて

5

最初の行がDelete_Release_Test_Data(conString)でアレンジされていない特定の理由はありますか?アレンジ法アサートにthis linkから:

各メソッドは空白行で区切られたグループこれらの機能部、べき:

  1. すべての必要な前提条件との入力をアレンジ。
  2. Actテスト中のオブジェクトまたはメソッド。
  3. Assert予想される結果が発生していることを示します。有効なテストデータを挿入

は、アレンジ部の下に置かなければならないことを意味し、この試験の前提条件です。

:またDelete_Release_When_Existsに、このテストの名前を変更してからも、正しい例外がスローされたか、戻り値が正しいことをされていることを確認するためのテストDelete_Release_When_Doesnt_Existを作成することができます。

+0

「特定のものはありますか?」1.)はいあります。私たちはすべての前提条件を、テストのたびに呼び出される[Setup]属性を持つセットアップメソッドで通常実行します。私たちはメソッドのための個別のテストデータを持っていません(例外は私が投稿したサンプルです...)したがって、我々のアプローチはどのようにAAAパターンに適合していますか? "... Note:..." 2.)私のdeleteReleaseメソッドは何故失敗するのでしょうか?何も返さないのですか?これは著者自身からのみ削除することができますので、ここでは並行処理は行いません。 – Pascal

+0

AAAは単体テストに重点を置いており、統合テストを行っているので、それを大まかなガイドラインとして使い、細部にはあまり慣れないようにしてください。あなたが[Setup]メソッドを使っているならば、それをアレンジブロックに入れるか、それを持っていない方がいいでしょう。 – Lester

+0

また、私のメモはまだ有効です。 "なぜそれが失敗するべきか尋ねる?"いくつかのシステムでは、期待される動作が無効な入力で失敗すると主張することができますが、システムでは期待される動作は何もしないことがあります。 – Lester

関連する問題