java-覆盖测试

覆盖测试-cobertura

  本文不是详细介绍cobertura的文章,只是笼统上说一下覆盖测试。

  从三个方面来说:

  1:cobertura是一款覆盖测试的框架并且是开源框架,并且依赖于单元测试例如junit。

  2:进行覆盖测试的时间段是在单元测试完成后进行(如果连单元测试都是有问题的或者是不全面,不完整的。进行覆盖测试根本没有意义)。

  3:进行覆盖测试的意义,能够测试代码是否有效正确(语句测试)。同时能够检测你的单元测试是否进行了测试了所有可能的case。同时也能够测试代码部分是否全部有效(分支测试)。

  书写单元测试按照规范来写,尽量每一个分支写一个case这样能使出错的时候更加明显。并且expected ,actual单独用变量表示。junit选用了4,因为junit4完全兼容junit3,所以在进行单元测试的时候最好选用junit4进行测试。 

  以下部分为简单的覆盖测试例子。

  maven  pom文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.zhang</groupId>
    <artifactId>testjunit</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.2</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>cobertura-maven-plugin</artifactId>
                 <version>2.5.1</version>  
                <configuration>
                    <instrumentation>
                        <!--<ignore>.*</ignore> -->
                        <!--用来排除测试类,以MOdel结尾的类不算在要进行覆盖测试的类里面-->
                        <excludes>
                            <exclude>**/*Model.class</exclude>
                        </excludes>
                    </instrumentation>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

Maven Cobertura Plugin集成详见  http://blog.csdn.net/kongxx/article/details/7757571

主类

 1 package com.zhang.testjunit;
 2 
 3 /**
 4  * @author act
 5  *
 6  *
 7  */
 8 public class MyJunit {
 9 
10     public int myDivide(int x,int y){
11         if(0==y){
12             System.out.println("重新输入y");
13             return -1;
14         }else if(0==x){
15             return x/y;
16         }else {
17             return x/y;
18         }
19     }
20 }

测试类

package com.zhang.testjunit;

import junit.framework.TestCase;


/**
 * @author act
 *
 *
 */

public class MyJunitTest extends TestCase{

    public void testMyDivide(){
        MyJunit mj = new MyJunit();
        int actual = mj.myDivide(6, 2);
        int expected = 3;
        assertEquals(expected, actual);
    }
    public  void testMyDivide1(){
        MyJunit mj = new MyJunit();
        int actual = mj.myDivide(6, 0);
        int expected = -1;
        assertEquals(expected, actual);
    }
}

生成测试报告

java-覆盖测试

正好符合测试报告,测试类中有一个分支没有进行测试,并且model类也没有算到里面。

java-覆盖测试,布布扣,bubuko.com

java-覆盖测试

上一篇:JavaScript中判断为整数的多种方式


下一篇:JS 前序遍历、中序遍历、后序遍历、层序遍历详解,深度优先与广度优先区别,附leetcode例题题解答案