2016-08-11 4 views
-2

正しい予想される結果で失敗しますNET 3.5の下で、NUnit 2.6.3を使用しています。これは.NET 3.5で使用できる最新のバージョンだと思います。このように単体テストが失敗する理由はありますか?これを修正する方法はありますか?NUnitのユニットテストは、NUnitのユニットテストを実行する場合、私は、次の出力を受信

+0

テストを表示せずに出力を表示したり、これらのクラスが何であるかは、誰も助けてくれません。あなたは計算機を持っていると言っているのですが、それは答えが5であると言われているので働いていません。入力が何であるかわからなければ、正しい出力が何かを知ることができません。 –

+0

他の人の参考にしてください。テストするクラスのEquals演算子をオーバーライドする必要があります。私の単純な実装は 'public override bool Equals(object obj){return obj.GetType()== GetType();でした。 } '。 – Ingenioushax

答えて

-1

オーバーライド(、OBJ OBJ b)はNUnitのAreEqualでこの欲求不満を解消等しいあなたはObj_AがObj_Bに実際に等しいことを保証するために、すべてのデータをチェックしたいと思うもちろん

public override bool Equals(object obj) 
{ 
    return obj.GetType() == GetType(); 
} 

+0

これはおそらく、あなたがAssert.AreEqual(ExpectedAddress、ActualAddress)のようなことをしていたためです。 Assert.AreEqual(ExpectedAddress.Name、ActualAddress.Name)など(チェックする必要がない場合もあります。そうでなければ、Equalsオーバーライドは明らかに移動方法です) –

+0

いつものように、それは文脈に依存していますが、a.Equals(b)は、等価性が奇妙な実装のような型の音だけをチェックし、したがって、このテストに関連する唯一のものは、アドレスが返されるかどうかを確認することです。あなたはそれが正しい住所かどうか気にしませんか? – prgmtc

+0

右。私は簡単にすべてのプロパティをチェックすることができますが、私はちょうどタイプが適切に戻ってきていることを確認したい。さらに、私がこれを理解するまでには、私は机を裏返す準備ができていたので、基本的な実装は、私がアプリケーションを稼働させていることを示すために必要なものでした。 – Ingenioushax

1

通常、このタイプのエラーはNUnitの奇妙なものではなく、同じ参照ではないオブジェクトをチェックしているためです。あなたのテストを貼り付けると、何が起こっているのかがわかりますが、あなたの場合は、例えばモックから戻ってくるオブジェクトを主張すると修正されます。例えば:私はアドレスの特定のプロパティ値をテストする場合を除き、私は通常、対等を行う方法です

[Test] 
public void MyTest() 
{ 
    //Arrange 
    const string id = "the id" 
    var address = new Address{Id = id}; 
    var repository = new Mock<IRepository>(); //Using Moq here 
    repository.Setup(r => r.Get(id)) 
       .Returns(address); 
    var sut = new AddressManager(repository.Object); 

    //Act 
    var returnedAddress = sut.GetAddress(id); 

    //Assert 
    repository.VerifyAll(); //Checks you're calling the repository with the "id" 
    Assert.That(returnedAddress, Is.EqualTo(address)); // This will pass because the reference is the same 
} 

、テストのしかし、そのタイプは、マッパーまたは類似のようなクラスに記載されています。私はEquals btwをオーバーライドしたことはありません。

希望します。

+0

これは本当に素晴らしいことです。時間を割いていただきありがとうございます。残念ながら、私はテストケースを変更することができませんでしたので、 'Is.EqualTo(object) 'を追加することはオプションにはなりませんでした。 :/これは素晴らしいですが、私はそれをブックマークします。 :D – Ingenioushax

関連する問題