问题标签 [testdrivendesign]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
1101 浏览

agile - 如何在 BizTalk 中仍然使用 DDD、TDD?

我刚开始在工作中接触 BizTalk,并希望继续使用我学到的关于 DDD、TDD 等的所有知识。这是否可能,或者我在创建管道和编排之类的东西时总是必须使用类似 Visio 的编辑器?

0 投票
8 回答
3670 浏览

unit-testing - 嘲讽的目的

嘲讽的目的是什么?

我一直在关注一些使用 NUnit 进行测试和 Moq 进行模拟的 ASP.NET MVC 教程。不过,我对它的嘲笑部分有点不清楚。

0 投票
7 回答
1985 浏览

python - TDD - 初学者问题和绊脚石

虽然我已经为我完成的大部分代码编写了单元测试,但我最近才通过 Kent Beck 的示例获得了一份 TDD 副本。我一直对我做出的某些设计决定感到遗憾,因为它们阻止了应用程序“可测试”。我通读了这本书,虽然其中一些看起来很陌生,但我觉得我可以管理它并决定在我当前的项目中尝试它,该项目基本上是一个客户端/服务器系统,两个部分通过它进行通信。USB。一个在小工具上,另一个在主机上。该应用程序使用 Python。

我开始了,很快就陷入了混乱的重写和小测试中,后来我发现这些并没有真正测试任何东西。我把它们中的大部分都扔掉了,现在有了一个工作应用程序,它的测试全部凝结成 2 个。

根据我的经验,我有几个问题想请教。我从 TDD 新手中获得了一些信息:是否有带有测试的示例应用程序来展示如何进行 TDD?但有一些具体的问题我想回答/讨论。

  1. Kent Beck 使用他添加和删除的列表来指导开发过程。你如何制作这样的清单?我最初有一些项目,如“服务器应该启动”,“如果通道不可用,服务器应该中止”等,但它们混合在一起,最后现在,它就像“客户端应该能够连接到服务器”(其中包含服务器启动等)。
  2. 你如何处理重写?我最初选择了基于命名管道的半双工系统,以便我可以在自己的机器上开发应用程序逻辑,然后添加USB通信部分。他们变成了基于套接字的东西,然后从使用原始套接字转移到使用 Python SocketServer 模块。每次事情发生变化时,我发现我不得不重写相当一部分测试,这很烦人。我认为在我的开发过程中,测试将是一个不变的指南。他们只是觉得需要处理更多的代码。
  3. 我需要一个客户端和一个服务器通过通道进行通信以测试任何一方。我可以模拟其中一方来测试另一方,但是整个频道都不会被测试,我担心我会错过。这有损于整个红/绿/重构节奏。这只是缺乏经验还是我做错了什么?
  4. “假装直到成功”给我留下了很多凌乱的代码,后来我花了很多时间重构和清理。这是事情的运作方式吗?
  5. 在会话结束时,我现在让我的客户端和服务器运行大约 3 或 4 个单元测试。我花了大约一周的时间才完成。如果我在代码后使用单元测试,我想我可以在一天内完成。我看不到收益。

我正在寻找使用这种方法完全(或几乎完全)实施大型非平凡项目的人的评论和建议。在我已经运行了一些东西并想要添加一个新功能之后,按照这种方式去做对我来说是有意义的,但是从头开始做这件事似乎很累,而且不值得付出努力。

PS:请让我知道这是否应该是社区维基,我会这样标记它。

更新 0:所有答案都同样有帮助。我选择了我做的那个,因为它最能与我的经历产生共鸣。

更新1:练习练习练习!

0 投票
4 回答
470 浏览

c# - 通过 TDD 创建映射函数:编写测试花费了太多时间?

我是 TDD 的狂热爱好者,并且总是努力在编写生产代码之前编写测试,以确保我正在编写的代码的正确行为。然而,偶尔会有几个问题,是否为某些类型的方法编写大量测试是谨慎的。这似乎在编写映射器类时最常出现。

例如,上面有大约十几个属性要映射到上面。在 TDD 环境中,在编写任何映射之前,我可能会编写一个测试。类似的东西MapToFooMapsBeverageToFooYuk()。测试失败,导致我编写代码使其通过。我对每个要映射的属性重复此操作。问题是:这是否将测试优先的开发走得太远了?我个人不这么认为,因为我宁愿有一整套测试告诉我代码的确切作用,但我想听听社区的想法。

0 投票
8 回答
6374 浏览

.net - 单元测试还是功能测试?

我最近听说过功能测试优于单元测试。

我知道单元测试会从最原子的形式测试给定代码的每一种可能性。但是功能测试呢?

在我看来,这听起来像是只测试代码是否有效,但它和单元测试一样可靠吗?

有人告诉我,这件事有两种观点。某些人更喜欢单元测试,其他人更喜欢功能测试。

是否有任何好的资源、链接、书籍、任何参考资料或你们中的任何一个可以解释和阐明我在这个主题上的道路?

谢谢!

0 投票
2 回答
225 浏览

asp.net-mvc - TDD 和 MVC 的十字路口。什么 ORM 集成得很好?

我刚开始接触 MVC 世界,我使用了一个内置于 VS 2010 中的标准 MVC 模板。我已经连接了几个控制器和视图,现在我需要访问我的数据库。

我有一个相当大的现有 SQL Server 2005 数据库,已经由第 3 方公司定义。我正在尝试为我们的特定公司需求添加一个报告/管理界面。

所以,我想,最初只是从这个数据库的几个表中提取一个列表。那么......使用 MVC 3,有哪些 ORM 工具可以很好地集成?

我也在尝试使用试驾设计方法。对于需要插入/更新/删除数据的测试,我不确定该怎么做。那是“模拟”发挥作用吗?

0 投票
1 回答
56 浏览

testing - 当我们可以 DI 委托以使其可测试时,为什么要提取接口?

我正在浏览 SO 并在答案中看到了这条评论:

当我们可以 DI 委托以使其可测试时,为什么还要经历提取接口的仪式?

这表达了我今年早些时候的一个想法。注入纯功能(我猜是函数指针)而不是接口实现有什么本质上的错误吗?

0 投票
1 回答
712 浏览

unit-testing - TDD multi threaded applications

Could someone shed some light on how multi threaded functionality could be developed in a pure TDD fashion. (possibly with some examples in C# or Java)

Thanks in Advance.

0 投票
1 回答
471 浏览

tdd - 基于 TDD CRUD 的场景

我有一个简单的基于 CRUD 的应用程序要完成。我正在尝试以 TDD 方式解决此问题。我是 TDD 的新手,实际上无法理解如何进行测试。

场景是:

  • 我需要能够创建/更新/删除员工(一次一个)。
  • 我需要能够检索员工列表以进行显示

为简单起见,您可以假设这是一个命令行应用程序。(我实际上打算将其作为 WPF MVVM 应用程序来执行。)

我不确定我的第一个测试应该是什么。

到目前为止,我尝试过的是:

假设我有一个返回一组员工的员工存储库。

我尝试的第一个测试是:

我从这个开始,然后从 GetEmployees() 方法返回一个 Employee 对象以使我的测试通过。然后,一旦测试通过,我就重构了 EmployeeRepository 以实现一个接口并在测试方法上使用它。

这是一项非常微不足道的任务,这种方法对我来说似乎有点过头了(至少现在是这样)。但是我敢肯定,当应用程序变得更大时,即使是微不足道的测试也会开始得到回报。

但我有一种感觉,我的方法有些不对劲。有经验的 TDDer 会采用同样的方法吗?或者那会是什么。我也想不出可以用于“添加员工”功能的测试。

我可以跳过这些 CRUD 场景,并可能尝试测试其他更复杂的功能。但这是正确的方法吗?

基本上我现在正在做的是测试驱动我的存储库,除了持久化和检索信息之外没有做任何事情。到目前为止,这个 TDDing 这对我来说似乎是一项非常平凡的任务。

感谢您的所有投入。

0 投票
2 回答
65 浏览

java - 如何在 Eclipse 中使用测试驱动设计概念测试异常

我正在使用测试驱动设计概念编写一个 Stack 类。

在 setUp() 方法中,我的堆栈是用 0 个这样的元素创建的

这是我试图捕获 StackEmptyException 的测试,它会在 setUp() 之后立即调用 top 时引发。

我的问题在最后一行。我不明白为什么我的代码不起作用!