如果您(或您的组织)渴望彻底地testing您的代码,您如何衡量您的努力的成功或质量? 你使用代码覆盖率,你的目标是什么百分比? 你觉得像TDD这样的哲学比衡量指标有更好的影响吗?
项目编写unit testing的哪些部分几乎或者是不可能? 数据访问? FTP? 如果有这个问题的答案,那么%100的覆盖率是一个神话,不是吗?
我读过(并重读)Martin Fowler的Mocks不是存根(stub) 。 其中,他定义了两种不同的TDD方法:“古典”和“Mockist” 。 他试图回答这个问题:“ 我应该成为一个古典主义者还是嘲笑者? ”,但是他承认,他从来没有尝试过“嘲笑TDD”的玩具。 所以我想我会在这里问这个问题。 自Fowler上次在2007年1月更新文章以来,好的答案可能会重复Fowler的论点(但希望更清楚)或者添加他没有想到的或其他人提出的论点。
我不是新来的testing,但是对于在Django中testing不同层次的build议混乱感到困惑。 一些build议(他们是对的),以避免在模型中的Doctests ,因为他们是不可维护的… 其他人说不要使用灯具 ,因为它比辅助function更不灵活,例如.. 还有两个人为了使用Mock对象而战斗。 第一组相信使用模拟和隔离系统的其余部分,而另一组喜欢停止嘲笑,并开始testing .. 我上面提到的所有,主要是关于testing模型。 functiontesting是另一回事(使用test.Client()VS webTest VS等) 是否有任何可维护的,可扩展的和适当的方式来testing不同层? UPDATE 我知道Carl Meyer在PyCon 2012上的演讲
我正在开发一个Spring MVC项目,并对源代码树中的所有组件进行了unit testing。 例如,如果我有一个控制器HomeController ,需要注入一个LoginService ,那么在我的unit testingHomeControllerTest我只是简单地实例化对象(在Spring之外)并注入属性: protected void setUp() throws Exception { super.setUp(); //… controller = new HomeController(); controller.setLoginService( new SimpleLoginService() ); //… } 这对于testing每个组件作为一个单独的单元非常适用 – 除了现在我有几十个类在项目中,写了一个类并写了一个成功的unit testing之后,我一直忘记更新我的Spring MVC上下文文件部署应用程序中的实际接线。 我发现当我将项目部署到Tomcat并从非接线的bean中find一堆NullPointers时,我忘了更新上下文文件。 所以,这是我的问题: 这是我的第一个Spring项目 – 正如我所做的为单个bean创buildunit testing是正常的,然后创build第二套testing(集成testing)来testing一切与实际应用程序上下文的预期一致吗? 有没有一个确定的最佳实践呢? 另外,如何将unit testing和集成testing分开? 我有所有的源代码在src ,unit testing在test – 应该有第二个testing文件夹(如test-integration )集成testing用例? 既然这是我的第一个春季项目,我很好奇别人通常会怎么做这样的事情 – 而不是重新发明轮子,而是问问其余的社区。
我现在在一个敏捷的办公室工作了一段时间。 我们使用Scrum进行项目pipe理,并混合使用XP的工程实践。 它运作良好,我们不断吸取教训,改进我们的过程。 我想告诉你我们通常的testing做法,并获得有关如何改进的反馈意见: TDD:第一道防线我们对于unit testing非常虔诚,我会说我们的开发人员也有足够的经验来编写全面的testing,并且总是把SUT与Mock隔离。 集成testing对于我们的使用,集成testing基本上与没有使用模拟的unit testing相同。 这往往会遇到一些unit testing中遇到的问题。 这些testing往往难以阅读,因为它们通常涉及大量的工作,或者在规范框架的before_each和after_each部分中工作,因为为了使testing有意义,系统必须经常达到一定的状态。 functiontesting我们通常以结构化但是手动的方式来做这件事。 我们玩过Selenium和Windmill,这很酷,但对我们来说至less还不够。 我想听听别人怎么做。 你认为如果集成testing或functiontesting做得不错,另一个可以忽略不计?
假设我们已经意识到TDD的价值太晚了。 项目已经成熟,很多客户开始使用它。 说使用自动化testing主要是function/系统testing,并且有很多自动GUItesting。 假设我们有新的function请求和新的错误报告(!)。 所以很多发展仍然在继续。 请注意,已经有很多没有或很lessunit testing的业务对象。 他们之间太多的协作/关系,只能通过更高层次的function/系统testing来进行testing。 没有集成testing本身。 大型数据库有大量的表格,视图等等。只是为了实例化一个单一的业务对象,已经有很多的数据库往返。 我们现在怎么介绍TDD呢? 嘲笑似乎是要走的路。 但是我们在这里需要做的嘲弄的数量似乎太多了。 听起来像精心devise的基础设施需要为现有的工具(BO,数据库等)工作的嘲笑系统开发。 这是否意味着只有从头开始时,TDD才是一种合适的方法? 我有兴趣了解在已经成熟的产品中引入TDD的可行策略。
我已经阅读了许多关于TDD可以带给项目的好处的文章,但是我从来没有在自己的项目中实践过TDD。 现在我正在用Django开始一个实验项目,我想也许我可以尝试一下TDD。 但是我现在发现的是,我甚至不知道如何回答“我应该在我的testing用例里面放什么?”的问题。 请告诉我如何在项目中计划TDD,在这种情况下,基于Django的Web项目。 谢谢。
一直以来我一直试图跳上TDD的潮stream,除了一件重要的事情之外,它一直在顺利进行,通常我最终做的就是testing后的开发。 我需要精神转变,想知道你是如何强迫自己先写testing的?
在没有Rails的情况下使用RSpec进行TDD的过程是什么? 我需要一个Gemfile吗? 它只需要rspec吗? Ruby 1.9.3