首页 > 代码库 > 第三次作业

第三次作业

                    单元测试

单元测试是针对软件的最小模块进行正确性检验的测试工作。所谓最小模块,在OOP的范畴内,通常是指对象的方法。

单元测试是程序员的一项基本职责和基本技能,直接影响到程序员的工作效率和软件的质量,

也直接影响到团队的合作。试想以下的情形:

某程序员提交了一段未经测试的代码,另外一个程序员checkout出来后,使得本地的代码无法正常运行,花费了很长的时间才发现是这段未经测试的代码的问题:影响了其他程序员的工作。

某程序员的代码没有单元测试,过了一段时间发现程序运行异常,经过艰苦排查,发现是这段代码的问题,于是修复了漏洞;又过了一段时间,发现了另外一个bug,于是修复了这个新发现的bug;但是在修复这个bug的时候,导致了上次发现的bug重现(当时没有发现这个问题,因为一般只是对刚刚修复的bug作简单的测试):这是一个恶性循,一个bug的修复导致了另外一个bug的出现而不自觉。

单元测试的好处也是显而易见的:

提高了整个团队的工作效率。有质量的代码是对整个团队的贡献。

提高了程序员的责任心和代码的质量。通过单元测试,保证自己的代码是可靠的和完整的,这是对自己负责,也是对团队负责。

单元测试的内容
单元测试主要分为人工静态检查和动态(自动)执行跟踪检查。

人工静态检查
人工静态检查的主要目的是保证:

正确性,能够实现预期的功能。

清晰性,代码简明易懂,注释没有歧义。

规范性,代码的格式、命名等符合公司的编码规范和代码风格。

高效性,代码的执行效率尽量高。

以上的检查目标的优先级是从高到底的。

自动跟踪检查
自动跟踪检查是我们研究的重点。所谓自动跟踪检查,是指通过单元测试工具,编写单元测试的类和方法。当执行测试类和方法时,自动对设定的输入条件进行计算,并给出测试的结果。

通过自动跟踪测试,我们能够将发现的每个bug或者能够想到的未来可能的bug写进测试类和方法中。这样只要运行测试类,就能够有效的发现bug是否仍然存在,或者已经修复的bug是否又“死灰复燃”。

自动跟踪检查方式的单元测试是XP核心理念之一。单元测试和每日构建技术的结合,能够保证整个开发过程平滑顺利的推进。

                       在Eclipse中使用JUnit4进行单元测试

第一步:

打开eclipse.exe,创建一个名为“123”的工项目,创建一个名为”UnitTest”的类。

public class unitTest {public static void main(String[] args) {int sum=0;int a=2;for (int i = 0; i < 50; i++) {sum+=a;a+=2;}System.out.println(sum);}}

第二步:

JUnit4单元测试包引入这个项目:在该项目“123”上点右键,点“属性”(Properties),在弹出的属性窗口中,首先在左边选择“Java 构建路径(Java Build Path)然后到右上选择"库(L)"(Libraries)标签,之后在最右边点击“添加库(A)”(Add Libraries)按钮,点击完成,JUnit4软件包就被包含进我们这个项目了。如下图所示:技术分享

第三步:

生成JUnit测试框架:在Eclipse的包资源管理器(Package Explorer)中用右键点击该类”UnitTest“弹出菜单,选择 新建 →JUnit测试用例 (New a JUnit Test Case),在弹出的对话框中,进行相应的选择。如下图所示:

技术分享

完整的测试代码如下:

import static org.junit.Assert.*;import org.junit.Test;public class unitTestTest {    @Test    public void testMain() {        int sum=0;        int a=2;        for (int i = 0; i < 50; i++) {        sum+=a;        a+=2;        }        System.out.println(sum);        }    }

测试结果如下:

技术分享

测试成功,没有出现错误。

第三次作业