我是新手,我有一个新的 .net Web 项目,它位于 UI->BLL->DAL->DB 结构中,我目前使用 NUnit 进行一些测试。我打算用它来测试中间层,所以我不必实际写入数据库。
现在,我从来没有做过任何模拟,不知道从哪里开始,所以我正在寻找一个有一些端到端示例的模拟框架!有人能指点我一些从头开始的嘲笑材料吗?请提供完整的样本?
谢谢,
射线。
我是新手,我有一个新的 .net Web 项目,它位于 UI->BLL->DAL->DB 结构中,我目前使用 NUnit 进行一些测试。我打算用它来测试中间层,所以我不必实际写入数据库。
现在,我从来没有做过任何模拟,不知道从哪里开始,所以我正在寻找一个有一些端到端示例的模拟框架!有人能指点我一些从头开始的嘲笑材料吗?请提供完整的样本?
谢谢,
射线。
目前有许多不同的模拟框架。我建议您看看 RhinoMock 或 TypeMock。两者对于个人/开源项目都是免费的。TypeMock 也有公司许可证。
RhinoMock 强制您重构代码以实现可测试性(如果需要,如果您已经有可测试的代码,那么您做得很好)。这需要更多的工作,但它会给你留下松散耦合的代码,这本身就是一个福音。由于这个原因,有些结构你根本不能直接用 Rhino 模拟。但是,您始终可以引入额外的间接层并以这种方式解决它。然而,底线是:您需要做更多的工作,但最终重构将使您的代码受益。
另一方面,TypeMock 通过动态修改代码来工作(它使用分析器 API 来注入代码)。这允许您对不适合此类测试的代码使用模拟。TypeMock 几乎可以让您模拟任何东西(mscorlib 除外),因此它很容易上手,并且可以很好地与遗留代码配合使用。但是,由于您不必重构代码,因此您不会获得松散耦合类型的额外好处。此外,由于运行代码被修改,TypeMock 有时会导致非常奇怪的错误。
Rhino Mocks是一个你可以使用的框架,我已经使用了一点。
备忘单有一些链接,如果您想尝试其他一些,尽管这篇文章有点过时了。
类型模拟?...
好吧,对我来说最好的模拟 - 接口,对你的代码进行一些重构,并弄清楚你想要测试什么,这样你就不需要任何模拟了。或者 - 任何依赖注入来模拟一些东西(但在你需要重构之前)
您可能对我们正在编写的书感兴趣http://www.mockobjects.com/book。它是 Java,但原理是相同的。