這是單元測試的第一次嘗試。我的.Equals
方法在TestSet_Equals_True
,TestSet_Equals_True_Shuffled_Order
上失敗。希望澄清這是否與單元測試有關,或者我的.Equals
方法有問題。覆蓋等於方法和單元測試
單元測試:
private void Populate(Set set, int count)
{
for (int i = 0; i < count; ++i)
set.Add(i);
}
[TestMethod]
public void TestSet_Equals_True()
{
Set set1 = new Set();
Set set2 = new Set();
Populate(set1, POPULATE_COUNT);
Populate(set2, POPULATE_COUNT);
bool expected = true;
bool actual = set1.Equals(set2);
Assert.AreEqual(expected, actual);
}
類:
List<object> _set;
//Override Equals
public override bool Equals(object obj)
{
if (this.GetType() != obj.GetType())
return false;
Set o = (Set)obj;
if (this._set.Count != o._set.Count)
return false;
o._set.Sort();
this._set.Sort();
return _set.Equals(o._set); }
到底是什麼故障? –
「TestSet_Equals_True」,「TestSet_Equals_True_Shuffled_Order」應該添加相同的元素並測試true,如果元素經過相等測試,如果元素失序但仍然是相同元素,則爲true。 – Kairan
你是否也覆蓋'GetHashCode'?另外,看看這篇文章 - 它描述了一個數組比較的解決方案:http://www.dotnetperls.com/sequenceequal –