Questions tagged «tdd»

TDD代表测试驱动开发或测试驱动设计。这是在编写代码以使其满足要求之前编写单元测试的实践,即所谓的“红绿色重构周期”。

6
使用TDD启动新项目
我正在研究TDD,我读到它还可以帮助您定义应用程序的设计,对吗? 因此,我决定开始创建一个新项目,以帮助我更好地理解它。 我想创建一个简单的用户注册系统,询问其名称,电子邮件地址,国家(从列表中选择一个)和电话号码。 所以问题是... 我在VS 2010中创建了一个新的解决方案,添加了一个新的Test项目,但我只是不知道编写什么测试! 由于它将帮助我定义设计,因此我可以在此处编写哪些测试? 谢谢你的帮助!
10 c#  .net  tdd 

2
在测试驱动的开发过程中,软件架构师的作用是什么?
据我了解,Test-Driven Development是关于编写测试以定义程序规范的(如果我错了,可以纠正我)。 如果有人负责编写软件的规范(包括公共API)(我们称他为Software Architect),这是否意味着Software Architect必须编写所有测试? 还是由软件架构师编写规范,然后将其交给开发人员编写测试依据? 还是通过允许所有开发人员编写自己的测试而使规范有机地增长,而忘记了拥有软件架构师?
10 architecture  tdd 

3
在底层组件上进行TDD是个好主意吗?
我正在考虑编写低级驱动程序或OS组件/内核。 该osdev.org人们似乎认为重要的位没有有意义的可测试这种方式,但我看过一些讨论,有人认为是不同的。我环顾四周,但未能在低级组件上找到任何TDD的实际示例。 这是人们实际上在做的事情,还是人们在理论上谈论的事情,因为在实践中没有好的方法?

1
函数样式如何帮助模拟依赖项?
摘自《 Java Magazine》最近一期对Kent Beck的采访: Binstock:让我们讨论微服务。在我看来,微服务的测试优先会变得复杂,因为某些服务要正常运行就需要大量其他服务。你同意吗? 贝克:上一堂大班或上几堂小班,似乎是一组折衷方案。 Binstock:是的,除了我猜,在这里,您必须使用大量的模拟程序,以便能够建立一个可以测试给定服务的系统。 贝克:我不同意。如果它是命令式样式,则必须使用很多模拟。在一种功能样式中,外部依赖项在调用链中被聚集在一起,那么我认为这不是必需的。我认为您可以从单元测试中获得很多覆盖。 他什么意思?函数样式如何使您摆脱对外部依赖的嘲笑?

2
为什么使用UML图计划代码的组织方式不合适?
因此,是的,图表有时可能不合适。什么时候不合适?当您创建没有代码的代码来验证它们时,然后打算遵循它们。绘制图表探索想法没有错。 敏捷软件开发:原理,模式和实践 -Robert C. Martin 他到底是什么意思?UML是否旨在帮助计划如何在 “切入” 之前构造代码?如果您不遵循自己想到的图,使用它有什么意义? 上下文:在本章中,鲍伯叔叔为保龄球比赛的得分保持者制作了一个UML图。然后,他继续以测试驱动的方式开发程序,而无需查阅UML图。生成的程序与UML图完全不同,鲍勃叔叔得出了上面引用的结论。

3
跨语言测试驱动开发
简短的问题:您如何在跨多种语言的项目中遵循测试驱动开发? 具体来说,我正在编写一个使用JavaScript和PHP的Web应用程序,我想遵循TDD原则,但是我不确定如何将它们集成在一起。是否为JS和PHP部分运行单独的测试套件,并在JS套件中使用模拟来模拟服务器响应?是否有一种技术可以一次测试两个组件? 这是我第一次使用“测试驱动开发”,因此您可以分享有关如何减少测试难度的任何建议都是很棒的。我之所以选择它,是因为一旦完成原型,需求就改变了,迫使我改变设计。我认为如果我要从头开始,我想从一开始就使用内置的回归测试编写更可扩展的代码。 我正在SimpleTest中编写PHP测试,在JsTestDriver中编写JavaScript测试。我习惯了面向对象的范例,因此在PHP中有一些类,并且我在JavaScript中使用原型继承来做类似的事情。我也已经开始阅读有关Python中TDD的书和有关JavaScript中TDD的书,但是从我看到的所有内容来看,这些并没有描述对应用程序进行完整的测试(除了使用Selenium或其他Web驱动程序之外)进行前端验收测试,TDD是否不适合全栈开发人员使用?

2
在执行DDD时是否应该模拟实体和值对象?
阅读后几 文章约Newable VS 注射对象以及如何将这些概念涉及到DDD的服务,实体和值对象,我留下了有关使用我的代码newables尤其是在我的单元测试的一些疑虑。 可更新项的主要候选对象是Entities和Value对象,这意味着与其将这些依赖项注入其他对象中,还应该只是new这些对象的一个​​实例,并直接在代码中使用它们。 但是,良好的DDD做法主张将责任分配给实体和价值对象(如果认为合适的话)。因此,实体和价值对象将最终在其中包含一些严肃的业务逻辑。 现在,如果服务在实体或值对象上运行,我应该模拟该实体或值对象并将该模拟传递给该服务(模拟将要求interface对似乎被提倡的价值对象或实体使用)? 还是我应该只是new一个实体/值对象,并将具体实现传递给服务,从而违反仅测试一个单元的单元测试原理?

4
如果从头开始设计易于使用TDD的新语言,会怎么样?
在使用某些最常见的语言(Java,C#,Java等)时,当您想要完全TDD代码时,有时似乎与该语言存在分歧。 例如,在Java和C#中,您将要模拟类的任何依赖关系,大多数模拟框架将建议您模拟接口而不是类。这通常意味着您有多个接口且只有一个实现(这种效果更加明显,因为TDD会迫使您编写大量较小的类)。让您正确模拟具体类的解决方案可以做一些事情,例如更改编译器或覆盖类加载器等,这很讨厌。 那么,如果从头开始设计一种对TDD来说很棒的语言,它将是什么样?可能是某种语言级别的方式来描述依赖项(而不是将接口传递给构造函数),并且能够不明确地分离类的接口?

1
如何开始使用TDD编码一些简单功能?
我基本上有TDD的要旨。我卖了它很有用,并且对MSTEST框架有了一个合理的命令。但是,到目前为止,我还不能毕业于将其用作主要开发方法。通常,我将其用作编写控制台应用程序作为测试驱动程序的替代方法(我的传统方法)。 对我而言,最有用的是它吸收回归测试作用的方式。 我还没有构建专门隔离各种可测试行为的工具,这是我所知道的另一大部分。 因此,这个问题是要寻求关于我可能为以下开发任务编写的第一个测试的指针:我想生成以生产者/消费者的方式封装任务执行的代码。 我停下脚步,并决定在编写此代码后写这个问题(想知道这次是否可以真正使用TDD) 码: interface ITask { Guid TaskId { get; } bool IsComplete { get; } bool IsFailed { get; } bool IsRunning { get; } } interface ITaskContainer { Guid AddTask(ICommand action); } interface ICommand { string CommandName { get; } Dictionary<string, object> Parameters { get; …
9 c#  tdd 

4
单元测试中“单元”下的理解
据我理论上理解,“单位”下的人是指方法(在OOP中)。但是在实践中,孤立地验证某些方法的测试是非常脆弱的行为测试(不是验证结果,而是验证某些依赖方法的事实)。因此,我看到很多人从单位上了解一小组紧密相关的课程。在这种情况下,仅对外部依赖项进行了模拟/存根,对于内部单元内部实现中的依赖项,则使用该方法。在这种情况下,存在更多的状态,有意义的(根据规范)并且不是那么脆弱的测试。因此,问题是您对这些方法有何看法?将第二种方法称为单元测试是否有效?或者它是某种低级别的集成测试? 如果您发现通过这些测试方法之一应用TDD的一些特定注意事项,我将感谢您的想法。

3
BDD:入门
我从BDD开始,这是我的故事: Feature: Months and days to days In order to see months and days as days As a date conversion fan I need a webpage where users can enter days and months and convert them to days. 我有些疑惑 ... 我应该在编写任何代码之前先编写脚本还是先编写脚本然后编写代码,再编写脚本然后再编写代码,等等...? 如果我应该之前编写方案,是否可以批准我的步骤并且仍然无法完成生产代码? 什么时候应该对代码进行重构?完成该功能之后还是在每个方案实施之后?

4
单元测试的新名称[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我从不喜欢单元测试。我一直认为这增加了我要做的工作量。 事实证明,仅就您编写的实际代码行数而言,这是正确的,此外,您可以在一小时内通过测试和测试驱动的开发编写的有用代码的行数增加完全抵消了这一点。 现在,我喜欢单元测试,因为它们允许我编写有用的代码,而这些代码通常在第一次使用时就可以使用!(敲木头) 我发现,如果人们在严格的时间表内或在其他人不这样做的环境中,他们不愿意进行单元测试或以测试驱动的开发开始项目。有点喜欢,一种文化拒绝甚至尝试。 我认为关于单元测试的最强大的功能之一就是它给您进行重构的信心。这也给我带来了新的希望,我可以将我的代码提供给其他人进行重构/改进,并且如果我的单元测试仍然有效,那么我可以使用他们修改过的新版本的库,几乎不用担心。 我认为这是单元测试的最后一个方面,需要一个新名称。单元测试更像是该代码现在和将来应该做什么的合同。 当我听到“测试”一词时,我想到了关在笼子里的老鼠,并对其进行了多次实验,以观察化合物的有效性。这不是单元测试,我们不是在尝试不同的代码来了解什么是最有影响力的方法,而是在定义我们期望的输出和输入。在老鼠的例子中,单元测试更像是宇宙如何工作的定义,而不是在老鼠身上进行的实验。 我是处于崩溃状态还是其他人看到拒绝进行测试,他们是否认为这是他们不想这样做的类似原因? 您/其他人给出不测试的原因是什么? 您认为他们的动机不是单元测试吗? 作为单元测试的新名称,它可以克服某些异议,jContract呢?(我知道一点Java中心:)还是单位合同?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.