2010-07-28 41 views
0

我不明白爲什麼NUnit的Assert.AreEqual失敗。NUnit的Assert.AreEqual(對象A,對象B)假陰性?

var dataService = new DataService(db); 
dataService.Set("Tests", "circle1", circle); 
var circleData = dataService.Get("Tests", "circle1"); 
Assert.IsNotNull(circleData); 
var circleCopy = circleData.Get(); 
Assert.AreEqual(circle, circleCopy); 

使用NHibernate(存儲序列化數據,然後反序列化它)。我插入了一個斷點並檢查了局部變量窗口中的對象 - 它們是相同的。

下面是NUnit的消息:

Assert.AreEqual failed. Expected:<TestData.TestClassCircle>. Actual:<TestData.TestClassCircle>. 

這個測試爲什麼會失敗時,對象似乎是相同的?

回答

15

什麼是CircleData?它是否覆蓋Equals?在我看來就像你克隆它,這意味着你有兩個獨立的CircleData實例。除非CircleData覆蓋Equals,那麼它將被執行參考平等檢查,這將失敗。

+0

被這個的3倍左右自己咬傷。現在我一直記得:) – 2010-07-28 21:33:43

0

不清楚你在後臺做什麼dataService,但如果它是序列化/反序列化,你將不會得到相同的對象引用。 AreEqual比較內存中的對象引用而不是值。

相關問題