从测试中返回值时,是否可以更改NUnit使用的测试

时间:2013-09-11 12:23:37

标签: c# nunit

我有一组测试正在验证与外部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而不是简单的相等,那就太棒了。

这可能吗?

1 个答案:

答案 0 :(得分:0)

http://www.nunit.org/index.php?p=collectionAssert&r=2.5 - CollectionAssert.AreEquivalent()