• 实验二 单元测试


    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循环倒序输出即可实现!

  • 相关阅读:
    215. Kth Largest Element in an Array (have better solution )
    414. Third Maximum Number
    442. Find All Duplicates in an Array
    448. Find All Numbers Disappeared in an Array
    485. Max Consecutive Ones
    532. K-diff Pairs in an Array
    8. String to Integer (atoi)
    7. Reverse Integer
    [CTSC2012]熟悉的文章(广义后缀自动机+二分答案+单调队列优化DP)
    BZOJ 2119 股市的预测(后缀数组)
  • 原文地址:https://www.cnblogs.com/igottogo/p/5341209.html
Copyright © 2020-2023  润新知