zoukankan      html  css  js  c++  java
  • 实验二 单元测试

    1.(1)写一个程序,用于分析一个字符串中各个单词出现的频率,并将单词和它出现的频率输出显示。(单词之间用空格隔开,如“Hello World My First Unit Test”);

     (2)编写单元测试进行测试;

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

    代码如下:

    package cn.rocky;
    import java.util.Scanner;
    import java.util.Map;
    import java.util.LinkedHashMap;

    public class WordRate{

    /**
    * @param args
    */
    void run() {

    System.out.println("请输入一个字符串:");
    Scanner sc = new Scanner(System.in);
    String Str = sc.nextLine();
    String[] word = Str.split(" ");

    Map<String,Integer> map = new LinkedHashMap<String,Integer>();

    for(String s : word){
    if(map.containsKey(s)){
    Integer val = map.get(s);
    val += 1;
    map.put(s, val);
    }else{
    map.put(s, 1);
    }
    }
    System.out.println(map);
    }

    }

     

    package cn.rocky;

    public class Run{
    /**
    * @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    WordRate word = new WordRate();
    word.run();
    }

    }

    结果:

    单元测试:

    package cn.rocky;

    import org.junit.Test;

    public class WordRateTest {

    @Test
    public void testMain() {
    String Str = "Hello World My First Unit Test";
    }

    }

    覆盖率:

    总结:

    (1).采用HashMap遍历对输入的语句是以无序输出的,即单词的顺序错乱,因此采用LinkedHashMap顺序遍历,能够对输入的各个子字符串以顺序的形式输出。

    (2).一开始只写了一个类WordRate ,用ElcEmma查看代码覆盖率时发现只达到95%左右,原因在于类名没有被执行到。于是建立了一个实现类Run来对WordRate进行实现输出,使代码覆盖率达到了100%。好处:实现类运用了面向对象的思想,当WordRate类有n个构造方法时,建立实现类的main方法能够实现多个方法,想调用哪个就能灵活的调用。

    (3)使用foreach循环,对比传统的方法,代码显得更加简洁。

    2.

    (1)把一个英语句子中的单词次序颠倒后输出。例如输入“how are you”,输出“you are how”;

    (2)编写单元测试进行测试;

    (3)用ElcEmma查看代码覆盖率,要求覆盖率达到100%

    代码如下:

    package cn.rocky2;

    import java.util.Scanner;

    public class WordReverse {
    void run(){
    System.out.println("请输入一个字符串:");
    Scanner sc = new Scanner(System.in);
    String Str = sc.nextLine();
    String[] word = Str.split(" ");
    for (int i = word.length - 1; i >= 0; i--){
    System.out.println(word[i]);
    }
    }

    }

    package cn.rocky2;

    public class Run {

    /**
    * @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    WordReverse word = new WordReverse();
    word.run();
    }

    }

    单元测试:

    package cn.rocky2;
    import org.junit.Test;

    public class WordReverseTest {

    @Test
    public void testRun() {
    String str = "how are you";
    }

    }

    结果:

    代码覆盖率:

    总结:

    在第一题的基础上运用for循环倒序输出即可实现!

  • 相关阅读:
    AdvDataList分页 例码
    问一个关于生成静态页面的问题
    使用XMLDataSource简单实现多级下拉菜单
    简单的封装一个HTML 弹出对话框的空间
    JS 语言强大, 动态修改标准库
    Eclipse IDE 学习
    分布式程序的开发
    Http request Post pk Put
    Forward: X Forwarding with Putty on Windows
    转载: 颠覆了对于design 的认识
  • 原文地址:https://www.cnblogs.com/igottogo/p/5341209.html
Copyright © 2011-2022 走看看