问题标签 [tdd]

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 投票
2 回答
575 浏览

c# - Moqing一个界面

当我在谷歌搜索/阅读这个答案时,我想我也会在这里问。

我有一个类是 SDK 的包装器。该类接受一个 ILoader 对象并使用 ILoader 对象创建一个 ISBAObject,该 ISBAObject 被强制转换为一个 ISmallBusinessInstance 对象。我只是想用 Moq 来模拟这种行为。

编译器错误显示:错误 1 ​​'Moq.Language.IReturns.Returns(Microsoft.BusinessSolutions.SmallBusinessAccounting.Loader.ISbaObjects)' 的最佳重载方法匹配有一些无效参数

这里发生了什么?我希望 ISbaObjects 的 Mock 能够毫无问题地返回。

0 投票
5 回答
14865 浏览

c# - 将现有代码迁移到测试驱动开发

最近发现了这种开发方法,我发现它是一种相当不错的方法。所以,对于我的第一个项目,我有一个小的 DLL 代码(在 C#.NET 中,因为它的价值),我想为这个代码做一组测试,但我有点迷茫如何和从哪儿开始。

我正在使用 NUnit 和 VS 2008,任何关于从何种类开始、为什么编写测试以及一般如何将代码移动到基于测试的开发的任何提示都将不胜感激。

0 投票
4 回答
553 浏览

c# - 开始使用 C# 进行 TDD 编程的最佳步骤是什么?

我想开始使用 TDD,但我真的不知道从哪里开始。我们使用 .NET (C#/ASP.NET) 进行编码。

0 投票
6 回答
2851 浏览

tdd - 伪代码编程过程与测试驱动开发

对于没有读过 Code Complete 2 的人来说,Pseudocode Programming Process 基本上是一种设计例程的方法,先用通俗的英语描述,然后逐步修改为更详细的伪代码,最后是代码。这样做的主要好处是通过自上而下而不是自下而上构建系统来帮助您保持在正确的抽象级别,从而在不同的层中发展出干净的 API。我发现 TDD 在这方面不太有效,因为它过于关注做最少的事情以使测试通过,并且鼓励很少的前期设计。我还发现必须为不稳定的代码(不断被重构的代码)维护一套单元测试是相当困难的,因为通常情况下,你需要为一个只需要一次或两次的例程进行十几个单元测试。当你进行重构时——例如更改方法签名——你所做的大部分工作是更新测试而不是更新产品代码。我更喜欢在组件的代码稍微稳定后添加单元测试。

我的问题是——在尝试过这两种方法的人中,你更喜欢哪一种?

0 投票
4 回答
233 浏览

language-agnostic - 测试用例,“何时”、“什么”和“为什么”?

作为基于测试的开发的新手,这个问题一直困扰着我。多少是太多了?应该测试什么,应该如何测试,为什么要测试?给出的示例是在 C# 中使用 NUnit,但我认为问题本身与语言无关。

这是我自己的两个当前示例,对通用列表对象的测试(使用字符串进行测试,初始化函数添加了三个项目{"Foo", "Bar", "Baz"}):

该代码是相当自我注释的,所以我不会详细说明正在发生的事情,但是这种事情是否太过分了?Add()并且Remove()当然是单独测试的,那么我应该通过这些测试达到什么水平?我什至应该进行这些测试吗?

0 投票
7 回答
688 浏览

tdd - “代码覆盖”与“代码测试”?

将我当前的代码项目转换为 TDD,我注意到了一些事情。

在测试此代码并依靠代码覆盖工具来确定您是否有足够的测试时,我可以看到两种危险。

  • 您应该测试Test事件是否被触发。如果您忘记了这一点,仅代码覆盖工具不会告诉您。
  • 我马上就到另一个。

为此,我在启动函数中添加了一个事件处理程序,使其看起来像这样:

现在我可以简单地检查eventCount一下我的事件被调用了多少次,如果它被调用了。漂亮整齐。直到现在,我们才发现了一个永远不会被任何测试发现的阴险小错误:即,SomeFunction()在尝试调用事件之前不检查事件是否有任何处理程序。这将导致 null 取消引用,这将永远不会被我们的任何测试捕获,因为它们都默认附加了一个事件处理程序。但同样,代码覆盖率工具仍会报告完全覆盖率。

这只是我手头的“真实世界示例”,但我突然想到,即使您的代码 100%“覆盖”,也可能会漏掉更多此类错误,但这仍然不能转化为 100% 测试. 在编写测试时,我们是否应该对这种工具报告的覆盖率持保留态度?是否有其他类型的工具可以捕捉这些漏洞?

0 投票
8 回答
4055 浏览

php - 如何使用 PHP SimpleTest 框架设置数据库测试

我正在使用 SimpleTest,一个基于 PHP 的单元测试框架。我正在测试将处理从数据库存储和检索网站评论的新代码。我不知道如何构建项目来测试数据库访问代码。

我正在寻找有关在 PHP 应用程序中测试数据库代码的最佳实践的任何建议。例子真的很棒。进一步阅读的网站很棒。

非常感谢你。:)

0 投票
2 回答
3145 浏览

c# - 模拟参数的属性更改 - 使用 Moq

我正在使用 Moq 来模拟我的存储库层,以便进行单元测试。

当数据库插入成功时,我的存储库层插入方法会更新我的实体的 Id 属性。

如何配置 moq 以在调用 Insert 方法时更新实体的 Id 属性?

存储库代码:-

单元测试:-

ContractService 类(WCF 服务合同)的实现片段。

如果这些信息可能有点缺乏,我深表歉意。我今天才开始学习起订量和模拟框架。交流

0 投票
8 回答
1778 浏览

unit-testing - 为什么功能测试还不够?单元测试提供什么?

我刚刚与我的首席开发人员进行了交谈,他不同意单元测试是所有必要或重要的。在他看来,具有足够高代码覆盖率的功能测试就足够了,因为任何内部重构(接口更改等)都不会导致需要重写或重新检查测试。

我尝试解释但没有走得很远,并认为你们可以做得更好。;-) 所以...

对功能测试不提供的代码进行单元测试有什么好的理由?如果你只有功能测试,会有什么危险?

编辑#1感谢所有出色的答案。我想补充一点,通过功能测试,我不仅仅指对整个产品的测试,还包括对产品内的模块的测试,而不是在必要时进行模拟的单元测试的低级别等。另请注意我们的功能测试是自动的,并且会持续运行,但它们只需要比单元测试更长的时间(这是单元测试的一大优势)。

我喜欢砖与房子的例子。我想我的首席开发人员说的是测试房子的墙壁就足够了,你不需要测试单个砖块...... :-)

0 投票
2 回答
3020 浏览

wpf - 您在 WPF 工作中使用了哪些设计模式,您喜欢哪种设计模式?

我一直在研究有几个人建议的 Model-View-ViewModel 模式(尤其是 John Gossman,看看这篇文章和这个播客),但是人们使用和喜欢的其他模式(如果有的话)。 .. 他们在哪里增加价值?

我也偶然发现:

我很乐意就上述这些以及我可能尚未发现的那些进行积极讨论。