Tag: tdd

BDD与黄瓜和rspec – 何时是多余的?

Rails /工具特定版本: 你的unit testing有多深? 现在我写下: 黄瓜function(集成testing) – 这些testing针对我们的应用程序返回的HTML / JS,但有时也testing其他的东西,如调用第三方服务。 RSpec控制器testing(functiontesting),最初只有当控制器有任何有意义的逻辑,但现在越来越多。 RSpec模型testing(unit testing) 有时这是完全必要的; 有必要对模型中的行为进行testing,这对最终用户来说并不是完全明显或可见的。 模型复杂时,一定要进行testing。 但其他时候,在我看来,testing是多余的。 例如,如果你testing方法foo如果它只是由bar调用, bar进行testing? 如果bar是一个简单的辅助方法,在Cucumber特性中使用并且容易testing的模型会怎么样? 你是否在rspec和Cucumber中testing了这个方法? 我发现自己正在为此付出努力,因为编写更多的testing需要花费时间,并且维护实际上相同行为的多个“版本”,这使得维护testing套件的时间更加紧凑,从而导致更改更加昂贵。 总之,你是否相信有一段时间只写黄瓜function就够了? 还是应该经常在各个层面上进行testing? 如果您认为存在灰色地带,您需要进行function/unit testing的门槛是多less? 实际上,你现在做什么,为什么(或为什么不),你认为这是足够的? 编辑 : 这是一个什么可能是“testing矫枉过正”的例子。 诚然,我能够很快写出这个,但这完全是假设的。

用moq嘲笑虚拟只读属性

我找不到办法做到这一点,虽然这可以手工完成,为什么不与moq?

如何将消息附加到rspec检查?

在rspec中:我是否可以像在xUnit样式testing框架中一样将消息附加到检查中? 怎么样? assert_equal value1, value2, "something is wrong"

PHPUnit:我如何模拟多个方法调用多个参数?

我正在为使用PHPUnit的方法编写unit testing。 我正在testing的方法在同一个对象上调用同一个方法3次,但使用不同的参数集。 我的问题类似于这里和这里提出的问题 在其他文章中提出的问题与嘲笑只有一个参数的方法有关。 但是,我的方法需要多个参数,我需要这样的东西: $mock->expects($this->exactly(3)) ->method('MyMockedMethod') ->with($this->logicalOr($this->equalTo($arg1, $arg2, arg3….argNb), $this->equalTo($arg1b, $arg2b, arg3b….argNb), $this->equalTo($arg1c, $arg2c, arg3c….argNc) )) 此代码不起作用,因为equalTo()只validation一个参数。 给它多个参数会引发一个exception: PHPUnit_Framework_Constraint_IsEqual :: __ construct()的参数#2必须是数字 有没有办法做logicalOr嘲笑一个方法有多个参数? 提前致谢。

unit testing? 集成testing? 回归testing? 验收testing?

有没有人能够清楚地定义这些testing级别,因为我发现在进行TDD或unit testing时很难区分。 请如果有人能详细说明,何时执行这些?

如何编写好的unit testing?

任何人都可以build议学习unit testing的书籍或材料吗? 有些人认为没有unit testing的代码是遗留代码。 如今,testing驱动开发是轻松pipe理大型软件项目的方法。 我非常喜欢C ++,我没有经过任何正式的教育就自己学习了。 我从来没有考虑过unit testing,所以觉得被遗漏了。 我认为unit testing是重要的,从长远来看将是有帮助的。 我将不胜感激这个话题的任何帮助。 我关心的主要问题是: 什么是unit testing? 这是一个应该分析的testing用例的综合列表吗? 所以,让我们说,我有一个名为“复杂数字”的类中有一些方法(让我们find共轭,一个重载赋值运算符和一个重载乘法运算符,这样的类应该是典型的testing用例吗?selecttesting用例? 是否有任何框架可以为我创buildunit testing,或者我必须编写自己的类来进行testing? 我在Visual Studio 2008中看到了一个“testing”选项,但从来没有工作。 unit testing的标准是什么? 是否应该为class级中的每个function进行unit testing? 每个class级都有unit testing是否有意义?

用OCUnit进行unit testing的例子

我真的很难理解unit testing。 我明白TDD的重要性,但是我所读到的所有unit testing的例子都是非常简单和微不足道的。 例如,testing以确保属性已设置或内存分配给数组。 为什么? 如果我编码出来了..alloc] init] ,我真的需要确保它的工作? 我是新来的开发人员,所以我相信我在这里错过了一些东西,特别是围绕着TDD的所有热潮。 我认为我的主要问题是我找不到任何实际的例子。 这里是一个setReminderId方法,似乎是一个很好的候选人testing。 什么有用的unit testing看起来像确保这是工作? (使用OCUnit) – (NSNumber *)setReminderId: (NSDictionary *)reminderData { NSNumber *currentReminderId = [[NSUserDefaults standardUserDefaults] objectForKey:@"currentReminderId"]; if (currentReminderId) { // Increment the last reminderId currentReminderId = @(currentReminderId.intValue + 1); } else { // Set to 0 if it doesn't already exist currentReminderId = @0; […]

Cuke4Nuke或SpecFlow?

我正在决定是否应该使用Cuke4Nuke或SpecFlow。 什么是每个人的利弊? 意见哪个更好,为什么。 谢谢!

多态性或条件是否促进更好的devise?

我最近在googletesting博客中偶然发现了关于编写更多可testing代码的指导原则。 直到现在,我还是同意这位作者: 满足条件的多态性:如果你看到一个switch语句,你应该考虑多态性。 如果你看到相同的条件,在你class里的许多地方重复,你应该再次考虑多态性。 多态性将把你复杂的类分成几个更小的更简单的类,它们清楚地定义哪些代码片段是相关的并且一起执行。 这有助于testing,因为更简单/更小的类更容易testing。 我根本无法把头围住。 我可以理解使用多态而不是RTTI(或DIY-RTTI,视情况而定),但是这似乎是一个如此广泛的陈述,我无法想象它实际上在生产代码中被有效使用。 在我看来,为具有switch语句的方法添加额外的testing用例会比较容易,而不是将代码分解成几十个单独的类。 另外,我的印象是,多态性可能导致各种其他微妙的错误和devise问题,所以我很想知道这里的权衡是否值得。 有人可以向我解释这个testing指南是什么意思吗?

unit testing/ TDD有用的devise模式?

阅读这个问题帮助我巩固了unit testing中一直存在的一些问题,TDD等。 从TDD发展的方法来看,我知道这是正确的道路。 阅读各种教程帮助我理解如何开始,但是他们一直是非常简单化的 – 不是真的可以应用于活跃的项目。 我所pipe理的最好的方法是围绕我的代码的一小部分编写testing,比如图书馆,主应用程序使用这些东西,但没有以任何方式进行集成。 虽然这是有用的,它相当于大约5%的代码库。 关于如何进入下一步,还有很less的东西,以帮助我在主应用程序中进行一些testing。 诸如“ 没有unit testing的大多数代码都是用很强的依赖性(即新的遍布在这个地方)或者静态方法来构build的 ”和“ ……类之间具有高级耦合并不难得,难以configuration在你的class级内的对象等等。 “让我意识到下一步是理解如何分离代码以使其可testing。 我应该看什么来帮助我做到这一点? 是否有一套特定的devise模式,我需要了解并开始实施,这将使testing更容易?