我正在观看Rob Connerys在MVCStoreFront应用程序上的networking广播,我注意到他是unit testing,甚至是最平凡的事情,例如: public Decimal DiscountPrice { get { return this.Price – this.Discount; } } 会有一个像这样的testing: [TestMethod] public void Test_DiscountPrice { Product p = new Product(); p.Price = 100; p.Discount = 20; Assert.IsEqual(p.DiscountPrice,80); } 虽然我都是unit testing,但我有时会怀疑这种testing方式是否真正有益,例如,在真实的过程中,您的代码上面有3-4层(业务请求,需求文档,架构文档) ,实际定义的业务规则(折扣价格是价格 – 折扣)可能会被错误定义。 如果是这种情况,你的unit testing对你来说没有任何意义。 另外,你的unit testing是另一个失败点: [TestMethod] public void Test_DiscountPrice { Product p = new Product(); p.Price = […]
我发现的关于TDD的事情是,它需要时间来让你的testing设置和自然懒惰我总是想写尽可能less的代码。 我似乎做的第一件事是testing我的构造函数已经设置了所有的属性,但这是矫枉过正? 我的问题是,你写unit testing在什么级别的粒度? ..有没有一个testing太多的情况?
我有6个月的Rails开发经验。 我已经构build了一个Web应用程序,现在正在使用身份validation和授权和postgresql数据库。 我正在转向我的第二个Rails应用程序,但是这一次,经过学习,我想用TDD来开发它,因为我发现它更容易扩展和修复错误。 发展缓慢,但从长远来看更容易处理。 我听说过Rspec和黄瓜,但他们完全困惑。 我想知道RSpec和黄瓜之间有什么不同,以及它们的用途。 从初学者(谁也是唯一的开发者)的angular度来看,确定是否真的需要testing框架也是有用的。
默认情况下,nunittesting按字母顺序运行。 有谁知道任何方式来设置执行顺序? 这个属性是否存在?
我有一个同事为对象填写随机数据的unit testing。 他的理由是它提供了更广泛的testing,因为它会testing很多不同的值,而正常的testing只使用一个静态值。 我给了他很多不同的理由,主要是: 随机值意味着testing不是真正可重复的(这也意味着,如果testing可以随机失败,它可以在构build服务器上这样做,并打破构build) 如果它是一个随机值并且testing失败,我们需要a)修复这个对象,并且b)强迫我们每次testing这个值,所以我们知道它是有效的,但是因为它是随机的,所以我们不知道这个值是什么 另一位同事补充说: 如果我正在testing一个exception,那么随机值将不能确保testing以预期的状态结束 随机数据用于清除系统和加载testing,而不是unit testing 其他人可以添加额外的理由,我可以给他让他停止这样做吗? (或者,这是写一个unit testing的可接受的方法,我和我的另一个同事是错的?)
我刚刚开始使用F#,这是我的第一个function语言。 我一直准C#工作,并且非常喜欢F#如何让我重新思考如何编写代码。 我发现有一点让人迷惑,就是编写代码的过程发生了变化。 我已经在C#中使用了TDD多年,并且非常感谢有unit testing来知道我在哪里。 到目前为止,我用F#编写的过程一直是编写一些函数,使用交互式控制台与他们一起玩,直到我“合理地”确定他们工作,并调整和合并。 这在欧拉项目这样的小规模问题上效果很好,但是我无法想象以这样的方式构build大的东西。 人们如何进行unit testing并为F#程序构buildtesting套件? 是否有相当于TDD? 任何指针或想法赞赏。
unit testing对我来说听起来很棒,但是我不确定我应该花费什么时间真正学习它,除非我能说服其他人具有重要价值。 我必须说服其他程序员,更重要的是说服pipe理中的bean-counter,花在学习testing框架,编写testing,保持更新等等上的所有额外时间将会为自己付出代价,然后再付出一些代价。 有什么证据呢? 有没有人实际上开发了两个独立的团队相同的软件,一个使用unit testing,另一个不是,并比较结果? 我对此表示怀疑。 我只是为了certificate这一点:“在互联网上查看,大家都在谈论这个问题,所以一定是正确的做法”? 在哪里可以说服外行说单位testing是值得的?
我正在强烈考虑将unit testing添加到正在生产的现有项目中。 它是在18个月前开始的,然后才真正看到了TDD (面掌)的好处,所以现在这是一个相当大的解决scheme,有很多项目,我还没有从哪里开始添加unit testing。 是什么让我觉得这是偶尔一个旧的bug似乎重新出现,或者一个错误被固定在没有被固定的情况下检查。 unit testing会减less或防止这些问题发生。 通过阅读类似的问题,我看到了一些build议,比如从bug跟踪器开始,为每个bug编写一个testing用例,以防止回归。 但是,我担心我最终会错过大局,最终会丢失如果我从头开始使用TDD就会包含的基本testing。 是否有任何程序/步骤应该遵循,以确保现有的解决scheme是适当的unit testing,而不是只是入住? 我怎样才能确保testing的质量好,而不是任何testing的情况比没有testing好 。 所以我想我也问的是, 生产中现有的解决scheme值得付出吗? 最好忽略这个项目的testing,并将其添加到未来可能的重写中? 什么会更有益; 花费几个星期来增加testing或者几个星期增加function? (显然第三点的答案完全取决于你是否正在与pipe理层或开发人员交谈) 赏金的原因 添加一个赏金,试图吸引更广泛的答案,不仅证实我现有的怀疑,这是一件好事,但也有一些很好的理由反对。 我打算稍后写下这个问题,以利弊告诉pipe理层,花时间把产品的未来发展转移到TDD上是值得的。 我想要接近这个挑战,并发展我的推理,而不是我自己的偏见。
这两个testing框架的主要区别是什么? 我是一个全新的testing驱动开发,从一开始。
我的公司对于unit testing我们的代码是相当新的。 我一直在阅读关于TDD和unit testing一段时间,并确信它们的价值。 我试图说服我们的团队,TDD值得努力学习和改变我们的思维方式,但是这是一场艰苦的斗争。 这使我想到了我的问题。 TDD社区有很多人对编写testing和代码非常虔诚(而且我和他们在一起),但对于一个正在与TDD苦苦挣扎的团队来说,妥协还是会带来额外的好处? 一旦编写代码,我可能成功地让团队编写unit testing(也许作为签入代码的要求),我的假设是编写这些unit testing还是有价值的。 把一个挣扎的团队带进TDD的最好方法是什么? 如果失败了,即使是在编写代码之后,仍然值得编写unit testing吗? 编辑 我从中得到的是,在编码过程中,对我们来说开始进行unit testing是非常重要的。 对于那些拾取概念的团队来说,开始更多地走向TDD并首先进行testing。 感谢大家的意见。 跟进 我们最近开始了一个新的小项目,一小部分使用了TDD,剩下的则是在代码之后写unit testing。 在完成了项目的编码部分之后,那些编写代码的unit testing人员惊讶地发现TDD编码器已经完成了,代码更加稳定。 这是一个赢得怀疑者的好方法。 我们仍然有很多成长的痛苦,但遗嘱战似乎已经结束了。 感谢所有提供build议的人!