【发布时间】:2010-09-14 19:45:41
【问题描述】:
谁能给我一个使用 rhino mocks、nunit 和 unity 的好例子。我正在阅读每个方面的帮助,但似乎没有任何好的示例项目可以说明如何将它们一起使用以及使用它们设置项目/测试项目的方式。 IE。你是否在你的测试项目中创建了指向虚拟类的新 ioc 容器。那么犀牛是从哪里来的呢。
感谢您的帮助。
【问题讨论】:
标签: nunit unity-container ioc-container rhino mocking
谁能给我一个使用 rhino mocks、nunit 和 unity 的好例子。我正在阅读每个方面的帮助,但似乎没有任何好的示例项目可以说明如何将它们一起使用以及使用它们设置项目/测试项目的方式。 IE。你是否在你的测试项目中创建了指向虚拟类的新 ioc 容器。那么犀牛是从哪里来的呢。
感谢您的帮助。
【问题讨论】:
标签: nunit unity-container ioc-container rhino mocking
我同时使用所有这 3 个框架。看起来你的问题是你试图一次学习太多东西。
至于在测试中使用 IoC 容器,我从来不需要在单元测试中这样做——我只是根据需要使用 Rhino 模拟来传递依赖组件的存根/模拟。
对于集成测试,我可以看到在某些代码中初始化 IOC 容器的好处,例如,如果您使用 MVP 模式并希望用存根完全替换 GUI。
我将首先更详细地了解单元测试。我强烈推荐这本书The Art of Unit Testing。一本结合了 IOC、单元测试和隔离框架的好书,我发现是 Pro ASP.NET MVC- 现在有一个 2nd edition,但由于我没有阅读它,我无法真正评论它。这本书没有使用 Unity,但如果你了解了一个框架的工作原理,就很容易切换到使用另一个框架。当我从 Moq 搬到 Rhino 时,我找到了this wiki page particularly useful。
【讨论】:
您不需要在单元测试中使用 IoC。您应该测试接口的实现,而不是接口本身。
示例:Person 实现 IPerson。您应该有一个测试 Person 的 PersonTests 类。您使用 Rhino Mocks 创建 IPerson 的模拟或存根并测试 Person 类的功能。
(至少,我一直都是这样做的)。
然后您有单独的测试来测试您的 IoC(如果需要)。
【讨论】: