好吧,我知道已经有问题 开始与TDD..但是,我猜我知道一般的共识是 只是做它 然而,我似乎有以下问题得到我的头进入游戏:

  • 当工作与收藏品,执仍将测试用于明显的增加/删除/插入成功的,即使当根据仿制药等等,我们那种"知道"它要去工作?
  • 一些测试似乎永远需要实现..如工作时串输出,是否有一个"更好"的方式去这样的事情?(例如测试的对象模型分析之前,打破析下进入小行动和测试)在我心中你应该总是试验的"结果",但变化很大,并且是繁琐的设立。
  • 我没有检测框架使用(工作不会支付一)这样我就可以"实践"更多。是否有任何良好的那些都是免费用于商业用途?(在那一刻我用良好'ol 调试。Assert :)
  • 可能是最大的..有时候我不知道期待什么 发生..我的意思是,你会得到你的绿色光的但我总是担心我可能是缺少一个测试。。你挖的更深层次尝试破解密码、或者离开会,等待它的所有落在后面的(其中将花费更多)..

所以基本上我正在寻找这里不是一个" 只是做它 "但更多" 我做了这个,有问题这一点,解决他们通过这个 "..的 个人 经验:)

有帮助吗?

解决方案

第一,它是好的和正常感到沮丧当你第一次开始在试图使用TDD在你的编码的风格。只是不要气馁,并退出,你会需要给它一些时间。这是一个重大的范式转变,如何,我们认为解决的一个问题代码。我想它喜欢当我们交换从程序性的,面向对象的节目。

其次,我觉得,测试驱动的发展首先是一个设计活动,是用来充实该设计的部件通过创建一个测试,第一次描述了API这是要获得和你如何去使用它的功能。试验将有助于形和模的系统测试直到你已经能够封装足够的功能,以满足什么任务,你会的工作。

把上面的段落中心,让我们看看你的问题:

  1. 如果我使用一个收集在我的系统测试,然后我将设置一个期望,以确保代码被称为插入该项目,然后断言该计数的集合。我不一定试验的增加方法上我的内部名单。我只是确保它被称为当方法,增加了该项目被称为。我这样做是通过增加一个模拟测试框架,与我的测试框架。
  2. 测试串作为输出可以将冗长乏味。你不能考虑每一个的结果。你只能测试你的期望基于系统的功能进行测试。你应该总是打断你的测试下降到最小的元素,它是测试。这意味着你将有大量的试验,但试验小型和快速的和唯一的测试什么,他们应,没有别的。
  3. 有很多的开放源的测试框架的选择。我不认为这是最好的。只要找到一个你喜欢的,并开始使用它。
  4. 你所能做的就是设置你的测试的账户为什么你希望发生的。如果一个方案来引入了一个错误,在你的功能,至少你还有一个测试围绕功能对增加这方案进入测试,然后改变你的功能,直到通过测试。一个办法,找到在哪里我们可能已经错过了一个试验是使用 代码复盖率.

我介绍你的嘲讽的语在回答问题之一。当你介绍嘲弄到你的武器库分,它大大使测试更易于抽象离的部分,不是系统的一部分进行测试。这些资源的模拟框架出有:

一种方法来帮助在借,除了阅读有关的过程,是观察人这样做。我建议在看着屏幕上投下的特Boodhoo上 DNRTV.检查这些出:

好吧,这些将有助于你怎么看我介绍的使用。它还将介绍的另一个工具,称为 Resharper 以及它如何可以促进TDD过程。我不能让你这个工具足够的时做的影响。好像你正在学习的过程和你刚找到的一些问题已经解决与使用其他工具。

我想我会做一个不公正的社会,如果我没有更新这些通过加入肯特*贝克的新的系列 测试驱动发展的切实的程序员.

其他提示

从我自己的经验:

  1. 只有测试自己的代码,而不是潜在的框架的代码。所以如果你使用一个通用的名单然后就没有必要试验添加、删除等。

  2. 没有2.看那儿!猴子!!!

  3. 是的路要走。

  4. 你绝对不能测试的结果。我测试为什么我希望会发生,然后测试了几个边缘的情况下,我期望得到的例外情况或无效的反应。如果一个错误来的下降轨道的东西,因为你忘了测试,你应该做的第一件事(前试图修复的错误)的是写一个测试,以证明错误的存在。

我对此采取如下:

  • +1对于不测试框架编码,但仍可能需要测试的课程来自框架的课程。
  • 如果某些类/种方法是繁琐,以测试可能强烈的迹象表明,事情是错误的,与德兴的。我尝试要遵循"1类-1负责,方法1-1的行动"的原则。这样,你将能够测试复杂的方法更容易通过这样做,在较小的部分。
  • +1来完成.Java你也可以考虑 TestNG.
  • 方不是单一事件是一个过程。所以不要试图设想一切从一开始,但要确保每一个错误中发现的代码实际上是涵盖通过测试一旦发现。

我认为最重要的事情与(和实际上的一个伟大的成果,在有些递归的方式)有效的成功管理的依赖关系。你必须确定这个模块进行测试在隔离没有精心安装必要的。例如,如果是测试的一个部件,最终发送电子邮件,使电子邮件发送者的依赖性,这样你可以嘲笑它在你的测试。这导致第二点是嘲笑你的朋友。熟习与模拟框架和风格的测试,他们促进(行为,而不是经典的国家的基础),并设计选择他们鼓励(的 "告诉,不要问" 原则)。

我发现,该原则,说明在 三个索引卡片,很容易记住的本质使 是一个很好的指导。

无论如何,回答你的问题

  1. 你不需要测试你的东西"知道"要工作,除非你写的。你没有写仿制药,Microsoft。)
  2. 如果你需要做的就这么多你的测试,也许你的目/方法是做得太多。
  3. 下载 TestDriven.NET 立即启动单元的测试你觉得工作室,(除如果它是一个表达版)
  4. 只是测试 正确的事情会发生.你不 需要 测试了一切可能去的错误:你必须等待你的测试失败。

说真的,只要做到这一点,伙计。:)

我不是专家的缺陷,可以通过任何手段,但这里是我的观点:

  • 如果它是完全微不足道(吸气/者等)不要试验,除非你没有信心在代码中的一些原因。
  • 如果这是一个很简单的,而非微不足道的方法、进行测试。测试可能是容易写。
  • 当涉及到什么希望不要发生,我要说的是,如果某一潜在的问题是责任之类的你是测试,你需要测试它处理的是正确的。如果不是前类的责任,不要对它进行测试。

将来完成的测试框架往往是免费使用,所以,如果你是一个.净的家伙,查出呢,如果是你的事检查JUnit.

上述建议是好的,如果你想要一个列表中的自由的框架,你们看起来的距离不超过 来完成框架的列表 在维基百科上。希望这可以帮助:)

在我的意见(你的里程可能会有所不同):

1-如果你不写不行测试。如果你写了这和你没有一个测试对它不存在。

3-如大家所说的,来完成的免费和伟大。

2&4-确切地决定什么测试一那些东西,你可以辩论的与自己直到永远。我试着画出这种线路的使用原则的设计的合同。检查出面向对象软件建设"或"实用主义的程序"的详细信息。

保持试验短,"原子".试验的最小的假定,在每一个测试。让每个独立的标准方式针对web服务,用于集成测试我甚至创建一个新的数据库对每一个方法。如果你需要建立一些数据对每个试验使用的一个"启动"方法。使用嘲笑隔离该类测试的依赖关系。

我总是觉得"有什么最少量的代码,我需要写信来证明这一点适用于所有的情况?"

在过去的一年,我已经变得越来越相信的利益的影响。我已经学会了沿途:1)依赖注射是你的朋友。我不是在谈论反转的控制容器和框架,以组装插件结构,刚刚通过依赖关系成的构造对象进行测试。这种收回成巨大的红利在测试你的代码。2)我的激情/狂热的转换和抓住了一个模拟测试框架并设置有关使用嘲笑的一切,我可以。这导致脆弱的测试需要大量的痛苦的建立和会落在我开始任何重构。使用正确类型的试验倍。假货,你只需要履行一种接口、存根源数据回到受测试的对象,模拟,只有在你关心的相互作用。3)试验应该较小。目的是为一个断言或相互作用正在测试中的每一个测试。我试图做到这一点,主要是我在那里。这是关于性测试的代码也量有关的复杂性在测试时你需要重新审视它。

最大的问题,我已经与TDD工作已经有一个说明从一个标准的身体和第三方执行这一标准,是事实上的标准。我编写了许多非常好的单元测试的信的说明书仅发现,执行在另一边的围栏看到的标准更多的咨询文件。他们发挥了非常松散。只有这样,才能解决这个是测试的执行情况以及该单元的测试和"重构"的测试和代码是必要的。真正的问题是相信我的一部分,只要作为我的代码和单元的测试都是好的。不是这样。你需要建立实际产出和执行功能测试同时为你们单元的测试。小块的受益所有方式通过该进程-进入用户或利益攸关方的手中。

只是作为除了这个,我想我会说我已经把一个 博客 在我的思想在开始使用试验(下这次讨论和我自己的研究),因为它可能是有用的人查看这个螺纹。

"使用入门测试驱动的发展"-我有一些很好的意见迄今为止,将非常感谢任何的更多,你们必须提供。

我希望这可以帮助!:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top