0

我有一组测试正在验证与外部 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);
  }
}

到目前为止,这种方法一直有效,但由于此方法返回 Dictionary NUnit 报告失败并显示以下消息:

> Expected and actual are both
> <System.Collections.Generic.Dictionary`2[System.String,System.Int32]>
> with 1 elements

我想我可以用另一种方式来解决这个问题,但如果我可以让 NUnit 进行测试Is.EquivalentTo而不是简单的相等,那就太棒了。

那可能吗?

4

1 回答 1

0

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

于 2013-09-11T12:28:43.643 回答