JUnit测试框架

频繁地运行测试。每次编译请把测试也考虑进去—— 聲天至少执行每个测试一次。

重构过程中,你可以只运行少数几项测试,它们主要用来检査当下正在开发或整理的代码。是的,你可以只运行少数几项测试,这样肯定比较快,否则整个测试会减低你的幵发速度,使你开始犹豫是否还要这样下去。千万别屈服于这种诱惑,否则你一定会付出代价。

单元测试和功能测试

JUnit框架的用途是单元测试,所以我应该讲讲单元测试(Unit Test) 和功能测试 (Functional Test) 之间的差异。我一直挂在嘴上的其实是单元测试,编写这些测试的目的是为了提高程序员的生产率。至于让QA部门开心,那只是附带效果而已。

单元测试是高度局部化的东西,每个测试类都隶属于单一包。它能够测试其他包的接口,除此之外它将假设其他包一切正常。

功能测试就完全不同。它们用来保证软件能够正常运作。它们从客户的角度保障质最,并不关心程序员的生产力。它们应该由一个喜欢寻找bug的独立团队来开发。这个团队应该使用重量级工具和技术来帮助自己开发良好的功能测试。

—般而言,功能测试尽可能把整个系统当作一个黑箱。面对一个拥有GUI的待测系统,它们通过GUI来操作那个系统。面对文件更新程序或数据库更新程序,功能测试只观察特定输入所导致的数据变化。

一旦功能测试者或最终用户找到软件中的bug,要除掉它至少需要做两件事。当然你必须修改代码,才得以排除错误,但你还应该添加一个单元测试,用来暴露这个bug

JUnit框架设计用来编写单元测试。功能测试往往以其他工具辅助进行,例如某些拥有GUI的测试工具,然而通常你还得撰写一些“专用于你的应用程序”的测试工具,它们能比通用的GUI脚本更好地达到测试效果。你也可以运用JUnit来执行功能测试,但这通常不是最有效的形式。在进行重构时,我会更多地倚赖程序员的好朋友:单元测试。

results matching ""

    No results matching ""