1

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

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

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

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

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

===编辑===

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

4

1 回答 1

1

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

于 2009-12-02T10:31:38.737 回答