现在的位置: 首页 > 综合 > 正文

单元测试和JUnit

2018年03月23日 ⁄ 综合 ⁄ 共 1376字 ⁄ 字号 评论关闭

1 什么是单元测试?

2 为什么要进行单元测试?

3 如何进行单元测试?

1 什么是单元测试?

       单元测试(unit test,模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否可以达到预期目标。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。

       单元测试是由谁完成的?单元测试是由程序员自己来完成,最终受益的也是程序员自己。程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。经过了单元测试的代码才是已完成的代码,提交产品代码时也要同时提交测试代码。测试部门可以作一定程度的审核。

2 为什么要进行单元测试?

       我们编写代码时,一定会反复调试保证它能够编译通过。如果是编译没有通过的代码,没有任何人会愿意交付给自己的老板。但代码通过编译,只是说明了它的语法正确,却无法保证它的语义也一定正确(即是否能达到预期目标),没有任何人可以轻易承诺这段代码的行为一定是正确的。编写单元测试就是用来验证这段代码的行为是否与我们期望的一致。有了单元测试,我们可以自信的交付自己的代码,而没有任何的后顾之忧。单元测试可以重用,应付将来的实现的变化。

       通常,很多人都会在类的main函数中写测试类的方法(对于java语言而言),这种单元测试称为临时单元测试。但是临时单元测试方法有下述缺点:

(1) 多个类的main方法不能一起运行。当有多个main方法需要测试时,只能一个一个分别执行main方法;

(2)大多数情况下需要人为的观察输出,然后确定是否正确;

(3)只进行了临时单元测试的软件,针对代码的测试很不完整,代码覆盖率要超过70%都很困难,未覆盖的代码可能遗留大量的细小的错误,这些错误还会互相影响,当BUG暴露出来的时候难于调试,大幅度提高后期测试和维护成本,也降低了开发商的竞争力。

        进行充分的单元测试,是提高软件质量,降低开发成本的必由之路。开源单元测试框架Junit可以很好的解决上述问题。

3 如何进行单元测试?

  上述临时单元测试的缺点,可以用单元框架很好的解决。JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。它包括以下特性:

(1)用于测试期望结果的断言(Assertion)

(2)用于共享共同测试数据的测试工具

(3)用于方便的组织和运行测试的测试套件

(4)图形和文本的测试运行器

 3.1 在eclipse使用JUnit

eclispe使用JUnit见这里http://www.vogella.com/articles/JUnit/article.html      

 eclipse自带了JUnit。在要测试的类所在包上右击建立packege(名称一般为原包名+Test)右击,选择如下

在建立的测试类中写好测试方法后右击选择run as-->Junit Test,会看到如下结果

上图中Failure是指测试失败,Error是指测试程序本身出错。

3.2 JUnit的Anotation

3.3 JUnit的断言

抱歉!评论已关闭.