'a eşit değilse, Google'ın tamamen açıklayamadığı garip bir davranışa rastladım.C# UnitTest - Assert.AreEqual(), argüman geçersizse
using Microsoft.VisualStudio.TestTools.UnitTesting;
class TestClass
{
public override bool Equals(object obj)
{
return true;
}
}
[TestMethod]
public void TestMethod1()
{
TestClass t = new TestClass();
Assert.AreEqual (t, null); // fails
Assert.IsTrue (t.Equals (null)); // passes
}
Bu sınamanın başarılı olmasını beklerim. Ancak, Visual Studio 2008/.NET 3.5'de başarısız olur. Böyle olması mı yoksa bir böcek mi?
NUnit'te beklenen değer her zaman ilk olduğundan, AreEqual() yöntemini sözleşmeden geriye doğru kullanıyorsunuzdur. Dokümanları n'ye karşı t ile karşılaştırırsa veya t'ye karşı neyse karşılaştırılamıyor, bu yüzden bu ayrımı güvenilir kılan bir testi aramadım. – Ken