当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:14:00  来源:本站整理

追求代码质量 - 亲身体验行为驱动开辟[Java编程]

赞助商链接



  本文“追求代码质量 - 亲身体验行为驱动开辟[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

明显,测试本身是件功德.而在早期举行测试 — 比方在编写代码时 — 则 更有好处,这分外有利于提高代码质量.在开辟早期编写测试,您将获益良多. 您可以查抄代码的行为,并预先对它举行调试,这种动力无疑是宏大的.

即便理解了这种重要性,我们也没有到达关键的一点:使在编写代码之前 编 写测试成为一种尺度实践.正如 TDD 是极限编程(Extreme Programming)的下 一个演变阶段(后者推出了单元测试框架),以 TDD 为底子,新的飞跃也将到 来.本月,我邀请您和我一同实现从 TDD 到更具直观性的行为驱动测试(BDD) 的演变.

行为驱动开辟

固然测试优先编程关于有些人对比管用,但是并不实用于每一个人.固然有 的利用程序开辟人员狂热拥护 TDD,但也有人果断抵抗它.即便目前已经有了很 多测试框架,比方 TestNG、 Selenium 和 FEST,但不对 代码举行测试的来由 仍旧充分.

不采取 TDD 的两个常见来由是 “没有充足的时间举行测试” 和 “代码太 复杂,难以测试”.测试优先编程的另一个障碍是测试优先概念本身.很多人把 测试看做一种反映型活动,仅比抽象具体一点.经验奉告我们,不能测试不存在 的东西.关于某些开辟人员来说,关于这种概念框架,测试优先 是一种冲突的 说法.

但是,假如不考虑编写测试和若何测试,而是考虑行为,后果会若何呢?这 里所说的行为,是指一个利用程序应当 若何运行 — 实际上就是指它的标准.

实际上,您已经想到了这种办法.我们都想到过.请看下面的对话.

Frank: 什么是栈?

Linda: 它是一种数据构造,按先进后出(或后进先出 )的方法汇集对象.它普通有一个 API,此中包含 push() 和 pop() 等办法. 有时也有 peek() 办法.

Frank: push() 有什么功效?

Linda: push() 接 受一个输入对象,比方说 foo,并将它放入到一个内部容器(比方一个数组)中 .push() 普通不返回后果.

Frank: 假如我 push() 两个对象,比方先是 foo,然后是 bar,后果会怎样?

Linda: 第二个对象 bar 应当在栈(至少包 含两个对象)的顶部,所以假如调用 pop(),那么返回的应当是 bar,而不是 foo.假如再次调用 pop(),那么应当返回 foo,然后栈为空(假定在增添这两 个对象之前栈中没有对象).

Frank: 也就是说,pop 移除近来放入栈中的项 目?

Linda: 是的,pop() 应当移除最上面的项目(假定栈中还有可移除的项 目).peek() 与此近似,只是不移除栈中的对象.peek() 应当保存栈顶的项目 .

Frank: 假如之前没有 push 任何项目,那么调用 pop() 时会怎样?

Linda: pop() 应当抛出一个非常,表明栈中还没有 push 任何项.

Frank: 假如 push()null 会怎样?

Linda: 栈应当抛出一个非常,因为 null 不是一 个有效的可 push() 的值.

在这段对话中,有没有注意到什么分外的地方呢(除了 Frank 不是计算机科 学专业的)?这里重新到尾没有效到 “测试” 这个词.但是, “应当” 这个词却非常自然地到处闪现.

怎么做才自然?

我应当利用哪类框架?

由于注释(annotation)的来由,可以使 用 JUnit 和 TestNG 来实践 BDD.我发现利用 JBehave 之类的 BDD 框架越发 风趣,因为它供应了定义行为类的特点,比方非常框架 便于实现更具文学气势 的编程.

BDD 并非什么新闹事物,更不具有什么革命性的冲破.它只 是 TDD 的一个分支,此中 “测试” 这个词换成了 “应当 ”.除了语义,很多人还发现,与测试 概念相比,应当 这个概念是一种 更自然的开辟驱动因素.考虑行为(应当)会自但是然地促使您先编写标准类, 此后者可以成为一个非常有效的实现驱动因素.

以 Frank 和 Linda 的 对话为底子,让我们看看 BDD 若何故 TDD 但愿奉行的方法驱动开辟.


  以上是“追求代码质量 - 亲身体验行为驱动开辟[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 追求代码质量 - 操纵TestNG-Abbot实现自动化GUI测试
  • 追求代码质量 - 可反复的系统测试
  • 追求代码质量 - 顺服复杂的冗长代码
  • <b>追求代码质量 - 测试Struts遗留的操纵程序</b>
  • 追求代码质量 - 谨防精密耦合!
  • 追求代码质量 - 亲身体验行为驱动开辟
  • 追求代码质量 - 通过测试分类实现矫捷构建
  • 追求代码质量 - JUnit 4与TestNG的对比
  • 追求代码质量 - 用代码器量举行重构
  • 追求代码质量 - 操纵Selenium和TestNG举行编程式测试
  • 追求代码质量 - 用JUnitPerf举行性能测试
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .