首页 > 代码库 > 软件测试技术第一次试验之——JUnit的安装与使用

软件测试技术第一次试验之——JUnit的安装与使用

众所周知,在一个大型的软件项目中,测试是必不可少的。传统的测试方法往往要自己编写测试函数再结合测试用例进行验证,这样会显得比较繁琐。所以我们可以使用JUnit框架进行测试。

使用junit的好处就是这个结果是否正确的判断是它来完成的,我们只需要看看它告诉我们结果是否正确就可以了,在一般情况下会大大提高效率。

下图为传统测试方法与JUnit测试方法的代码量对比。

技术分享

接下来就是安装JUnit了

前提条件:电脑已安装eclipse,已配置java环境。

步骤一:下载JUnit与Hamcrest对应的jar包(注:Hamcrest是JUnit底层的匹配工具)

必须文件如图所示:

技术分享

接下来将这些文件导入对应项目中。(注:为了项目的可迁移性这里暂时不添加到全局变量。)

在Eclipse中新建项目 (File - new - javaproject)

建完项目之后右键点击项目,选择Build Path - Configure Build Path

然后点击Libraries - Add External JARs,选择你刚才下载的三个jar包,点击打开。

技术分享

导入完成如图所示

技术分享

查看左侧项目中应该多出来这三个jar包,至此JUnit项目环境已配置完成。

技术分享

步骤二:安装测试覆盖率工具 Eclemma 

在Eclipse上方菜单栏中点击Help,选择Eclipse Marketplace,在搜索栏中输入Eclemma,搜索出来后点击Install安装即可。

如果Eclipse上方导航栏出现这样一个小标记说明安装成功:技术分享

 

至此,环境配置已全部完成,下面来编辑一个小程序来测试一下Junit。

步骤三:程序测试

从最简单的测试加法减法开始,便于新手理解。

在项目下src文件夹下新建一个包(package),这里我命名为cn.tjuscs.st,大家可以自行命名。

在项目下新建类(class),我命名为MyTest,大家可以自行命名。

技术分享

下面为代码:

package cn.tjuscs.st;

public class MyTest {

    private int result;
    
    public void add(int a, int b)
    {
        result = a + b;
    }
    
    public void substract(int a, int b)
    {
        result = a - b;
    }
    
    public int getresult()
    {
        return result;
    }
    
}

很简单的加法与减法函数,相信大家都可以看得懂。

然后右键点击MyTest.java,选择new-JUnit Test Case,点击next选择函数add和substract后点击finish。这里不选择也可以,后续自行编辑。

然后eclipse会生成一个MyTestTest.java的类,表示这个是测试类。

下面是编辑后MyTestTest.java的代码:

package cn.tjuscs.st;

import static org.junit.Assert.*;

import org.junit.Test;
import org.junit.Ignore;

public class MyTestTest {
    
    MyTest t=new MyTest();

    @Test
    public void testAdd() {
        t.add(1,4);
        assertEquals(5, t.getresult());
    }
    
    @Test
    public void testSubstract() {
        t.substract(9,4);
        assertEquals(5, t.getresult());
    }
    
}

代码解释:@Test告诉JUnit接下来进行测试,assertEquals(期望值,测试用例);是JUnit自带的函数用来检测是否与预期相符。

因为1+4=5,9-4=5,这里两个测试都没有出问题,所以运行结果应该是一片绿色。

运行方法:在这个文件下点击右键-run as-junit test

运行结果:

技术分享

现在修改一下程序,把程序中的9换成6,按ctrl+s保存完再运行一下。

技术分享

这里就可以看到testSubstract这个函数出错了,和预期不符。

再来试一下覆盖率测试工具eclemma:

点击刚才装完eclemma生成的小图标旁边的小箭头技术分享,选择MyTestTest,这里可以看到结果如下:

技术分享

红色代表未执行,黄色代表条件没有全部执行(通常适用于if语句等),绿色代表执行过了。

如果这几次运行结果和图中相符,那么说明之前的步骤都没有问题了,接下来进行编写一个简单的三角形的测试程序。

很简单的代码,只是为了了解一下junit的使用方法,所以就不添加其他检测与判断,这里就不再赘述了。

TestTriangle.java:

package cn.tjuscs.st;

public class TestTriangle {
    
    public int getkind(int a, int b, int c)
    {
        int kind = 0;
        if (a+b<=c || a+c<=b || b+c<=a || a<=0 || b<=0 || c<=0)
            kind = -1;    //-1代表三角形不成立
        else if (a==b && b==c)
            kind = 1;  //1代表等边三角形
        else if ((a==b && a!=c) || (a==c && a!=b) || (b==c && b!=a))
            kind = 2; //2代表等腰三角形
        else if (a!=b && b!=c)
            kind = 3; //3代表普通三角形
        
        return kind;
    }
    
}

TestTriangleTest.java:

package cn.tjuscs.st;

import static org.junit.Assert.*;

import org.junit.Test;

public class TestTriangleTest {

    TestTriangle t = new TestTriangle();
    
    @Test
    public void test_not_a_triangle() {
        assertEquals(-1,t.getkind(1,2,3));
    }
    @Test
    public void test_equilateral() {
        assertEquals(1,t.getkind(2,2,2));
    }
    @Test
    public void test_isosceles() {
        assertEquals(2,t.getkind(2,2,3));
    }
    @Test
    public void test_scalene() {
        assertEquals(3,t.getkind(2,3,4));
    }
    
    
}

运行结果:

技术分享

这里四个函数全部运行正确,符合预期。

 

总结:作为软件开发人员,在大型项目中测试往往是一项工作量相当大的事情。如何正确地利用工具提高效率是作为一个程序员所必须知道的。JUnit就是一个相当好的工具,虽然成不了巨人,但是我们应该站在巨人的肩膀上看的更远。

 

软件测试技术第一次试验之——JUnit的安装与使用