测试驱动开发:控制反转(IOC)

我用Google搜索和阅读IOC一些很好的答案/职位,不明白的整体概念。 我有一个现有的框架(而不是设计得非常好)和TDD是一种深思熟虑后写一些NUnit测试夹具。 我可以使用国际奥委会与出改变现有的代码库现有的代码库? 或者,当我们从头开始设计的应用程序IOC使用?

--------------解决方案-------------

我用这个技术将传统的代码依赖注入美:

  • 如果我对一个类只创建一个对象,使它成为一个领域,并在构造函数中创建它。
  • 如果我创建多个对象,使工厂的对象,并创建工厂在构造函数中。
  • 把接口的对象(我喜欢“IDoThisForYou”的风格,因为它可以让我很容易理解类的角色,但无论你的作品)。
  • 级联构造 - 使一个构造了新的对象,并将它们传递到其他的接口。

现在,你可以嘲笑和DI的接口,你的测试。 实际梯级非常简单,你可以通过检查。 最终,你会得到的地步,你可以使用一个容器,然后你要删除的第一个构造函数; 这是实现这一一件容易的第一步。

(不要模拟出域对象有大量的数据 - 这是不值得的。)

祝你好运!

它并不一定要从头开始,但很明显,你会结构的东西,让国际奥委会,如果你确实非常痛苦,

但它可以被修补....取决于如何分离你的系统,可能会或可能不会是一个艰巨的任务。 从本质上讲它的对象创建模式,所以它唯一的作用创造的点....如果多数民众赞成做威利愿意不愿意所有的地方,那么它会需要一些清理。

我会从第一个获得单元测试的地方。 担心国际奥委会作为第二个问题,它实际上并不需要做TDD

分类:TDD 时间:2012-01-01 人气:0
本文关键词: TDD
分享到:

相关文章

  • TDD / BDD特别是对于Rails应用程序 2012-01-02

    如何颗粒状应使用TDD / BDD方法开发应用程序时,一送? 特别是关于到Rails应用程序. 你会测试每场单独然后用鼠标右键迁移,这将使它通过? 所以每场将有它自己的迁移? 请问您对实际测试,以确保现场是他们的? 我真的试图让我的头缠着哪里开始,如何颗粒状得到. 我去上手,只是冻结,因为我不知道如何测试每一件小事. 大部分的例子我见过使用验证作为一个例子. 我知道有之前写了很多代码,我只是不知道如何测试最基本的东西,如"应该有一个名字字段". 任何帮助深表感谢. 谢谢! ------

  • TDD做法:真正的失败和未实现的功能之辨 2012-01-04

    如果你是在TDD迭代的中间,你怎么知道哪些测试失败,因为现有的代码是不正确真诚和失败,因为无论是测试本身还是功能都尚未实现? 请不要说,"你根本不关心,因为你要解决这两个." 我准备搬过去那种心态. 我写的测试一般的做法如下: 首先,我建筑师测试套件的一般结构,在全部或部分. 那就是 - 我经历和只写测试的名称,提醒我,我打算实现的功能. 我通常(至少在Python)简单地用只有一个线上的每个测试开始:self.fail(). 说,每次11测试 - 通过这种方式,我可以通过列出每个功能

  • 困惑的TDD包装/适配器 2012-01-05

    我是新来的TDD现场,并试图找出我的测试是有我在圈子里四处走动. 我有一个应用程序,我想编写使用的OpenXML所以它拥有海量的对象,它依赖于从外部框架的工作. 我认为这将是让周围的这些对象,所以我从他们身上分离出来的情况下更改等.我的问题是,代表像一个细胞,我传递一个真正的细胞变成我的包装的包装是一个好主意(所以它有一些东西包裹)在构造函数中. 为了测试这个包装,我必须通过从OpenXML的框架,一个真正的细胞. 确定这是做,能,但我也想在SharedStringTablePart传递给构造函

  • 如何处理TDD的重构阶段 2012-01-05

    在TDD会议期间,假设我写一个失败的测试,然后让它通过. 我重构通过提取码出原单位,使用重构如提取类和Move方法. 现在再假设我原来的测试不再覆盖提取的代码,因为原始代码现在嘲弄了它的依赖,因为是一个单元测试是正确的. 它是正确的要回去和改造试验到提取的代码? 还是我在做我该如何重构过程中结束了未经测试的代码错了吗? 这感觉就像我的代码库缩放,我不得不重构,我改造了大量的测试到重构的代码. 这种感觉真的很别扭. 我是不是重构错了吗? --------------解决方案------------

  • 什么是做TDD时,处理转换方法的最佳方式? 2012-01-06

    什么是最好的做法是对付试图做测试驱动开发时出现的方法转换? 难道是创建静态的实用方法对这些工具方法进行转换,然后写单元测试? 我觉得这样做的问题是,当你编写针对调用此实用工具方法父类的方法测试时,你必须考虑转换时,因为大部分嘲弄框架所没有的模拟实用方法. 因此,与亲本方法处理写入验证方法变得困难. 我想过的另一种选择是创建负责对转换接口,和测试调用方法时,模拟出该接口. 会有坐在旁边接口的实现. 与此问题是,它似乎是多余的代码编写只是做转换,需要很多新的依赖将占到配置IOC容器时. 一个很好的例

  • TDD在笨:如何嘲笑数据库? 2012-01-10

    我在想笨TDD和我卡住了. 我使用的烤面包和想测试一个简单的功能,无需触摸数据库... function test_get_products_by_user_id() { } 如何创建数据库的模拟像这样的情况? 我不想在数据库中查询这种测试. --------------解决方案------------- 你有没有使用类似HypersonicSQL考虑? 这将创建一个内存数据库,它会像你的真正的数据库. 你必须要,虽然运行单元测试每次设置. 即使我想避免询问一个真正的数据库,这个答案是创建一个单

  • TDD作为一个缺陷削减战略 2012-01-12

    可TDD是成功的,因为没有对测试用例的建设和评价纳入指导缺陷削减战略? --------------解决方案------------- IMO,我的答案是否定的. 对于TDD是有效的,必须有围绕什么是测试意味着什么有一些合理测试准则. 如果没有一个准则,可能会有一些开发商最终得到吨的缺陷,因为他们最初的测试涵盖了非常小的组输入,例如只对有效的,这可能会导致使用TDD变成毫无价值的想法. 测试驱动的开发可以降低在QA周期的缺陷,仅仅是因为测试允许开发者找到之前发布其代码的QA团队的缺陷. 但是,如

  • TDD和​​游戏物理 2012-01-13

    我在玩弄一个小游戏的项目和我不是很在TDD经历我很想得到一对夫妇的事情一些专家的意见. 首先,我很早就意识到TDD似乎并不理想的游戏开发. 似乎众说纷纭相当广泛的主题. 我最初没有受过教育的意见是TDD仿佛它会工作得很好了所有的游戏逻辑. 我心想,任何的将处理视频输出和声音将被抽象成,将被测试的视觉类. 事很好开始. 我们的目标是创建一个2D太空飞行游戏(小行星对那些关心). 我创建了一系列的单元测试的船级. 像初始化,旋转的东西,可以很容易地在一系列测试,例如:GetRotation(),Tu

  • 从TDD敏捷有什么不同? 如果是的话有什么主要区别? 2012-01-14

    敏捷的TDD真的有什么不同? 如果是的话有什么主要区别? --------------解决方案------------- http://en.wikipedia.org/wiki/Agile_software_development http://en.wikipedia.org/wiki/Test-driven_development 总之,TDD和敏捷真正专注于不同的方面,并且不是相互排斥的彼此的. TDD是非常专注于如何代码被写入(因而往往是针对开发人员的个人或小团体的工作周期只). 敏捷

  • TDD - 测试业务规则/验证的ASP.NET MVC 2012-01-18

    我现在用的是锋利的架构,所以我可以很容易地使用模拟考试等,在我的单元测试和/或在TDD. 我已相当复杂的业务规则,并希望在控制器级别,以测试它们. 我只是想知道其他人怎么办呢? 对我来说,确认测试的业务规则分为三个层次: (1)房产级别(例如属性是必需的)(2)内部的属性级别(如开始日期<结束日期)(3)持久性水平(如姓名是唯一的,父母不能孩子的孩子) 我的验证框架也将属性分配错误. 我只是想知道其他人怎么办? 你写一个测试为每个业务规则,并检查正确的错误消息是否分配到正确的属性(即着眼于ASP

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.149 (s). 10 q(s)