zoukankan      html  css  js  c++  java
  • 软件测试技术第一次试验之——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就是一个相当好的工具,虽然成不了巨人,但是我们应该站在巨人的肩膀上看的更远。

  • 相关阅读:
    zookeeper 集群安装(单点与分布式成功安装)
    ubuntu下tty1tty5命令控制台无法登录
    (1)《QT+OpenGL学习之我见》初始化窗口及三个重要函数 vs+Qt
    完全免费和开源的权限管理系统
    系统在iis6上部署
    代码生成那点事
    大整数乘法计算
    对字符串和字符数组的理解
    不被严格文档类型支持的元素
    Java实现一个简单的聊天小程序
  • 原文地址:https://www.cnblogs.com/dhx96/p/6533047.html
Copyright © 2011-2022 走看看