我有一组测试正在验证与外部API的合同。我希望测试类实现契约接口,这样如果它被更改,测试类本身就会强制为任何新方法编写测试。
类似
public interface IExternalThing {
Dictionary<string, int> GetSomeValues(int id);
}
[TestFixture]
public class ContractVerification : IExternalThing {
private realExternalThing = new ExternalThing();
private static IEnumerable GetValuesSource {
get
{
yield return new TestCaseData(0).Returns(
new Dictionary<string, int> {
{"thing", 1}
}
);
}
}
[Test]
[TestCaseSource("GetValuesSource")]
public Dictionary<string, int> GetSomeValues(int id) {
return realExternalThing.GetSomeValues(id);
}
}
这种方法到目前为止一直有效,但是当这个方法返回一个字典时,NUnit报告了消息失败:
> Expected and actual are both
> <System.Collections.Generic.Dictionary`2[System.String,System.Int32]>
> with 1 elements
我想我可以采用另一种方式,但如果我可以让NUnit测试Is.EquivalentTo
而不是简单的相等,那就太棒了。
这可能吗?
答案 0 :(得分:0)
http://www.nunit.org/index.php?p=collectionAssert&r=2.5 - CollectionAssert.AreEquivalent()