我们编写了一个如下所示的测试。此测试需要,我们已经连接Equal
- 过载创造了CodeTableItem
-class:将[AutoFixture] SemanticComparison Of OfikeAlike应用于序列/集合/数组/ IEnumerable
ICollection<CodeTableItem> expectedValutaList = new List<CodeTableItem>();
expectedValutaList.Add(new CodeTableItem("DKK", "DKK"));
expectedValutaList.Add(new CodeTableItem("EUR", "EUR"));
RepoDac target = new RepoDac();
var actual = target.GetValutaKd();
CollectionAssert.AreEqual(expectedValutaList.ToList(),actual.ToList());
测试工作正常,但不幸的依赖于Equality
功能全,意思是,如果我有一个扩展CodeTableItem
-class更多的领域,并忘记扩展Equals
功能,单元测试仍然运行绿色,虽然我们不测试所有领域。我们希望避免这种Equality
污染(请参阅Test Specific Equality),该文字仅为符合该测试而编写。
我们使用OfLikeness
尝试,并以这种方式重写了测试:
ICollection<CodeTableItem> expectedValutaList = new List<CodeTableItem>();
expectedValutaList.Add(new CodeTableItem("DKK", "DKK"));
expectedValutaList.Add(new CodeTableItem("EUR", "EUR"));
var expectedValutaListWithLikeness =
expectedValutaList.AsSource().OfLikeness<List<CodeTableItem>>();
RepoDac target = new RepoDac();
ICollection<CodeTableItem> actual;
actual = target.GetValutaKd();
expectedValutaListWithLikeness.ShouldEqual(actual.ToList());
但测试失败,因为Capacity
是不相等的。我已经编写了多次运行反射的代码,并且通常最终会执行忽略字段的重载。有没有办法忽略OfLikeness
或ShouldEqual
的某些字段?或者有解决这个问题的其他方法吗?
非常感谢Mark,做到了!优雅! – 2012-08-02 07:56:37