2012-01-03 21 views
4

アクタデータの抽出を記述する "AAA"パターンでは、
ActまたはAssertセクションでは?ユニットテストAAAパターンのデータの抽出

このユニットテスト、この例のようなActまたはAssertの中にあるべきであるという2人の抽出を考えてみますか?私たちはUTのすべての標準を会社の中で作りたいと考えています。

[Test] 
public void Test() 
{ 
    // Arrange 
    var p1 = new Person(); 
    var p2 = new Person(); 
    Session.Save(p1); 
    Session.Save(p2); 

    // Act 
    var result = new PersonQuery().GetAll(); 
    var firstPerson = result[0]; 
    var secondPerson = result[1]; 

    // Assert 
    Assert.AreEqual(p1.Id, firstPerson.Id); 
    Assert.AreEqual(p2.Id, secondPerson.Id);   
} 

(この単純なテストでは、私はAssert.AreEqual(p1.Id, result[0].Id);を書くことができることを無視してください)
私はそれは大きな問題ではないけど、私はまだ物事に最高を行う方法を知りたいです。

答えて

7

これがアサートフェーズで発生する必要があります

[Test] 
public void Test() 
{ 
    // Arrange 
    var p1 = new Person(); 
    var p2 = new Person(); 
    Session.Save(p1); 
    Session.Save(p2); 

    // Act 
    var result = new PersonQuery().GetAll(); 

    // Assert 
    var firstPerson = result[0]; 
    var secondPerson = result[1]; 
    Assert.AreEqual(p1.Id, firstPerson.Id); 
    Assert.AreEqual(p2.Id, secondPerson.Id);   
} 

Act相が唯一のテスト対象のメソッドを呼び出す必要とします。

1

これは、経験則によって異なります - Actステージは、テストの下でビジネスロジックの実行を表します。あなたのケースでは、result[i]インデクサーが直接的なコレクションアイテムのアクセッサである場合、抽出がビジネスロジックに影響を与えるかどうかによって異なります。にはデータが抽出されているので、Actです。