如何使用Winforms开始使用TDD

时间:2013-02-06 16:06:47

标签: unit-testing tdd automated-tests bdd

我已经阅读/观看过TDD& BDD最近我真的很想掌握它。我是一名开发人员,只编写代码然后从外部测试(就像我们一直开始的那样)。问题似乎在于使用TDD启动和运行。我想创建一个简单的Winform应用程序,我想在其中显示一些可以说产品的列表。我只是不知道从哪里开始,我应该先为控制器编写测试吗?控制器需要参考视图和服务等等。 ASP.Net MVC是为测试而构建的,因此它很容易上手,但Winforms真的很痛苦。请给我一些在Winforms中显示TDD的视频(最常用)。

我看过很多视频,告诉你测试一个类或功能,但是你如何测试不支持测试的UI?

  

简而言之,我想知道是否有人已经做了一段时间的TDD,怎么样   他/她在Winforms中做到了吗?

我编写了大量代码,我只是因为卡住而删除了,请帮助!

3 个答案:

答案 0 :(得分:3)

以下是我为任何类型的UI所做的工作,无论是Web或Winforms,WPF还是Swing in Java,甚至是将被其他系统使用的Web服务接口。

  • 编写用户界面,并对其背后的任何数据进行硬编码。
  • 编写控制器,并将硬编码数据移动到控制器。控制器应该只是以UI可以理解的形式呈现数据。

您的控制器现在没有任何行为;只是静态数据 - 但它有适合用户界面的API,现在你知道用户界面想要如何使用它。

  • 编写一个示例,说明UI将如何以最基本的形式使用控制器。
  • 让示例有效。
  • 编写另一个示例,显示控制器在不同的上下文中的行为方式。
  • 让示例有效。

那些是你的单元测试!如果您知道您的控制器需要其他一些类来进行协作,那么您也可以嘲笑它们。

一旦您的协作者被嘲笑,您就已经知道控制器想要如何使用它们。同样,您已经为这些协作者提供了API,因为控制器正在使用它们。

当我们谈论BDD中的“从外到内”时,这就是我们正在做的事情。

答案 1 :(得分:2)

我也是TDD的新手,和我一样,我正在努力学习。以下是我在搜索过程中想出的内容,也许它对您有所帮助:

  1. 查看Roy Osherove's website以及他的书“The Art of Unit Testing”。看看视频,有一些很棒的,特别是“配对编程”部分。他的书是我读过的关于单元测试和TDD的最好的一本书,也是我从封面阅读的唯一一本书。
  2. 查看一些TDD katas。我在上一个项目中建议的网页上有一些。看看其他人如何解决katas。这真的很有帮助。
  3. 了解依赖注入。
  4. 如果你想在WinForms中使用TDD,请查看MVP模式。据我所知,这是在WinForms中将UI与业务代码分离的事实上的模式。
  5. 祝你好运。

答案 2 :(得分:0)

控制器是一个很好的起点。将View public api解压缩到接口,使用Mocking Framework测试控制器与该接口的交互。您也可以对服务层执行相同的操作。 此外,在将测试添加到UI层之前,我将采用自下而上的方法进行此应用程序并对较低级别的层进行单元测试。在UI层,我将使用BDD框架编写一组验收测试,并使用模拟框架使这些测试变得轻量级并减少测试次数。

祝你好运!