彩票走势图

推荐一款检测代码覆盖率工具:EclEmma

原创|行业资讯|编辑:龚雪|2016-04-11 16:39:39.000|阅读 1011 次

概述:EclEmma是一个开源的软件测试工具,可以在编码过程中查看代码调用情况、也可以检测单覆盖率。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

EclEmma是一个开源的软件测试工具,可以在编码过程中查看代码调用情况、也可以检测单覆盖率。

Eclipse下EclEmma安装

  1. 选择Help->Eclipse Marketplace->搜索EclEmma,Install;
  2. 重启eclipse发现工具栏上出现Coverage图标,说明安装成功;

EclEmma使用

  • EclEmma查看代码调用情况

  1. 新建一个项目,然后添加一个类,然后简单书写一些代码;
  2. 右键项目->选择Coverage As->Java Application,可以得到如下结果:
  • EclEmma检测覆盖率

  1. 选择Window->Show View->Other->Java->Coverage可以看到代码执行的覆盖率;
  2. 其中可以看到每一个类中代码被执行的百分比,见2,也可以看到整个项目代码被执行的百分比,见1;
  3. 其中检测覆盖率可以用到单元测试中,查看单元测试覆盖率。

示例

  • 写一个程序,用于分析一个字符串中各个单词出现的频率,并将单词和它出现的频率输出显示。(单词之间用空格隔开,如“Hello World My First Unit Test”);
     import java.util.ArrayList;
     import java.util.Collections;
     import java.util.Comparator;
     import java.util.HashMap;
     import java.util.List;
     import java.util.Map;
     import java.util.Scanner;
     import java.util.Map.Entry;
    
     public class Count {
         private static String str;
         public  Count (String str){
             Count.str=str;
         }
         public static void main(String[] args) {
             System.out.print("请输入您要测试的字符串:");
             Scanner in=new Scanner(System.in);
             str = in.nextLine();
             count(str);
    
         }
    
         public static void count(String str){
             String[] items = str.split(" ");
             Map<String, Integer> map = new HashMap<String, Integer>();
             for (String s : items) {
                 if (map.containsKey(s))
                     map.put(s, map.get(s) + 1);
                 else {
                     map.put(s, 1);
                 }
             }
             List<Entry<String, Integer>> list = new ArrayList<Entry<String, Integer>>();
             for (Entry<String, Integer> entry : map.entrySet()) {
                 list.add(entry);
             }
             Collections.sort(list, new EntryComparator());
    
             for (Entry<String, Integer> obj : list) {
                 System.out.println(obj.getKey() + "\t" + obj.getValue());
             }
         }
     }
    
     class EntryComparator implements Comparator<Entry<String, Integer>> {
         public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
             return o1.getValue() > o2.getValue() ? 0 : 1;
         }
     }

     

  • 编写单元测试进行测试;
    import org.junit.Test;
    public class CountTest {
    @Test
    public void testCount() throws Exception {
    String str="i love you! and you? ";
    Count.count(str);
    }
    }

     

  • 用ElcEmma查看代码覆盖率,要求覆盖率达到100%。
  • 把一个英语句子中的单词次序颠倒后输出。例如输入“how are you”,输出“you are how”;
     import java.util.Scanner;
    
     public class Reverse{
    
         public static void main(String[] args) {
             Scanner input = new Scanner(System.in);
             System.out.print("请输入您要颠倒的字符串:");
             String str = input.nextLine();
             Reverse.reverse(str);
         }
         public static void reverse(String str){
             String[] strArr = str.split("\\s+|[,]");
             StringBuffer result = new StringBuffer();
             for(int i = strArr.length -1;i >=0; i--){
                 result.append(strArr[i] + " ");
             }
    
             result.setCharAt(str.length()-0, (char) 0);
             System.out.println("颠倒后的结果为:  "+result.toString());
    
         }
     }

     

  • 编写单元测试进行测试;
    importorg.junit.After;
    importorg.junit.Test;
    publicclassReverseTest{
    
    @Test
    publicvoidtest()throwsException{
    Stringstr="howareyou";
    Reverse.reverse(str);
    }
    
    }

     

  • 用ElcEmma查看代码覆盖率,要求覆盖率达到100%。

标签:代码优化软件测试

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP