2009-06-02 49 views
3

欣赏任何具有使用TDD和Model-View-Presenter模式使用Rhino Mocks的有用信息的网站的优秀示例或参考。使用TDD和模型视图演示器使用Rhino Mocks的好例子/参考

我所寻找的是相对于以下几点

  • 什么嘲笑(图和主持人)
  • 新的AAA语法
  • 如何嘲笑UI行为?例如如果在视图中输入的“firstName”和“lastName”启用 “提交”按钮,则禁用它。这只是一个简单的例子。
  • 最佳做法

在这个方向上的任何输入被不胜感激。

在此先感谢。

回答

4

既然你还没有得到答案,我会尽我所能学习到目前为止,

第一个问题;什么嘲笑 - 通常你会嘲笑你没有测试的一切。因此,假设你正在测试一个ViewModel,你可以模拟改变ViewModel的视图代码,以及模拟填充/保留ViewModel的模型代码。

第二个问题; AAA语法 - 通过将以下类型的注释添加到您的测试方法中,最容易保留AAA语法;模拟UI行为 - 通常你把它放在测试的Act部分(用于测试ViewModel)。第三个问题,模拟UI行为 - 通常你把它放在测试的Act部分(用于测试ViewModel)。

最后一个问题,最佳实践,我的经验说:

  • 一次只断言一件事,那么你的测试将会失败,只有一次失败,并且当你弄清楚出了什么问题时,你将会节省大量的时间。你甚至可以为每个断言创建一个测试方法,但要问一个关于如何实现的新问题,因为它需要不同的AAA语法实现来使事情可管理。
  • 使用依赖注入,因为它使代码更容易模拟。
  • 尽可能轻量级地进行测试 - 不要去数据库或磁盘上进行快速测试,以便开发人员尽可能多地执行测试。如果花费我5分钟来完成测试,我会厌倦等待。如果需要10秒,我愿意更频繁地做。
  • 最后 - 但最重要的是 - 确保您的团队中的任何人通过您的单次测试执行所有单元测试。这将使您的测试保持最新状态,并使代码基础更加稳定。使用像CruiseControl.net这样的contiues集成平台来建立一个独立的服务器 - 尽可能经常。线索是,如果有人/事物破坏了构建,你想尽快知道。

我的推荐参考文献;使用'你最喜欢的搜索引擎'来搜索你想要做的事情,或者在这里发布你的测试例子并获得评论 - 这将帮助你改进你正在做的事情。

1

菲尔·哈克对此有个不错的blog post。下载源代码并看看测试,它们评论得非常好。

+0

我不会推荐这个参考资料用于AAA或用RhinoMocks编写单元测试;代码不会使用AAA语法进行测试,并且使用Record/Reply写入测试对我而言,与AAA语法相比,它是一团糟。 – Thies 2009-07-23 11:55:59