【问题标题】:Unit Testing interface contracts in C#C# 中的单元测试接口契约
【发布时间】:2009-12-01 16:40:17
【问题描述】:

使用 VS2010 Beta 2 中提供的 Code Contracts 工具,我定义了一个接口、该接口的一个契约类和两个实现该接口的类。

现在当我来测试代码时,我想测试实现类,以便我知道它们的功能是正确的,我想测试合约代码,以便我知道我的条件是正确的。

我可以在 2 个实现类中的每一个中测试每个合同语句,但这显然是多余的。我可以在其中一个实现类上编写测试,但这似乎有点错误,如何在它们之间进行选择,在更改合同时记住要更新哪一个等。

我想测试实际的接口契约类,但是得到各种编译时警告,我想测试的接口方法在接口契约类上不可用。我知道实际将合约代码注入我的实现类(我可以在 ILDASM 中看到)会发生编译后魔术,但是当我检查接口合约类方法时,它们在 MISL 中,但为空。

我遗漏了一些东西,或者我想做的事情是不可能的。如果不是,那么“最佳实践”是什么?

===编辑===

这里的一个建议是在一个类(测试程序集内部)中实现接口,其目的仅仅是测试接口契约,听起来合理吗?

【问题讨论】:

  • 嗨,你有时间做这个吗?这些天我想知道类似的情况。

标签: visual-studio-2010 c#-4.0 code-contracts


【解决方案1】:

测试您的合约就像对您的单元测试进行单元测试。你不这样做是因为你必须为你的测试测试测试等等。

【讨论】:

  • 对于直接的合同声明,我同意这一点,但如果您在对象不变量中捕获业务规则,那么您可能希望测试这些?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多