Yukarıdaki hatayı eminim Unit test yaparken bir çok kişi almıştır. Ve ilk başta anlayamamıştır…”Excepted ve Actual değerlerim aynı nesne(?),nasıl test başarısız olur ki”… Olur…

Şöyle ki, aşağıdaki gibi bir obje yapımız var diyelim…

public class TestClass
{
private string _testString;
public TestClass(string test)
{
_testString = test;
}

public string TestString
{
get { return _testString; }
}

}

Şimdi Assert.AreEqual(new TestClass(“Test”), new MyClass(“Test”)); şeklindeki test kontrolümüz bize başlıktaki hatayı verecektir. Çok basit bir nedeni var bunun…Çünkü bu ikisi aynı nesne değil…İkiside memory’de farklı yerlerde tutulduğundan aynı nesne olarak algılanmaz.

Böyle bir durumda testin başarılı bir sonuç almasını istiyorsak Object’in Equals() methodunu override edip, kontrolü manuel olarak yapmamız gerekmekte.Ama çokta tavsiye edilen bir şey değil bu…Bunun yerine “Unit Test”‘in adından da gelen “birim” olarak test yapmak daha doğru olacaktır.

Assert.AreEqual(new TestClass(“Test”).TestString, new MyClass(“Test”).TestString);

Böylece daha nokta atışı kontroller yapabilirsiniz…