初学JAVA,看的是head first java,不是很明白,为什么有的class会有test class,有的,比如只有一个method的class,书里面就说不用写test class了呢,这个test是不是必要的呢?
初学JAVA,看的是head first java,不是很明白,为什么有的class会有test class,有的,比如只有一个method的class,书里面就说不用写test class了呢,这个test是不是必要的呢?
尽信书不如无书。书上说的东西,选择性吸收,不能这么迷信。
你说的class的test class其实就是单元测试。
[b]什么是单元测试[/b]
单元测试是指对组成程序的基本单元(比如一个类或者一个方法)进行测试,验证每个单元是否完成了预期的功能。单元测试是由开发人员进行的,因此有人又称之为程序员测试。
[b]单元测试的目标[/b]
单元测试要达到的目标,总体来说就是保证单元内部的处理是正确的、没有遗漏和多余功能。细分而言,单元测试要达到以下几个目标:
[list]
[*]信息能否正确地流入和流出单元。
[*]在单元工作过程中,其内部数据能否保持其完整性,包括内部数据的形式、内容及相互关系不发生错误,也包括全局变量在单元中的处理和影响。
[*]在为限制数据加工而设置的边界处,能否正确工作。
[*]单元的运行能否做到满足特定的逻辑覆盖。
[*]单元中发生了错误,其中的出错处理措施是否有效。
[/list]
[b]单元测试框架[/b]
我们一般不需要全程手动编写测试代码,或者自己实现测试框架,使用现成的单元测试框架会为我们提供极大的方便。目前最流行的单元测试框架是xUnit系列,常用的根据语言不同分为JUnit(java),CppUnit(C++),DUnit(Delphi ),NUnit(.net)等等。面向Java语言的JUnit,是其中最成功和最著名的一个。
[b]我的一点感谢[/b]
[color=red]其实如今单元测试达到的效果远不止它本身的功能,如今多用于“测试驱动开发”,测试优先,通过测试反映需求,然后驱动开发的过程,同时达到保证质量、促进重构、优化设计的目的。[/color]因为为了便于写单元测试的代码,就必须改进代码的设计和结构,否则如果代码结构乱或职责不单一可能就测不起来或很难测,所以就促进程序员不断去重构代码。其实好处还有很多。
所以不存在“是不是必要”的问题,而是有时候为了在项目中达到“保证代码质量”“促进代码重构”“改善代码设计”等目标所以才这么做。
有兴趣看看我当初的毕业设计,就是关于单元测试和测试驱动开发的:
[url]http://yunzhu.iteye.com/blog/436691[/url]