zoukankan      html  css  js  c++  java
  • software_testing_work2_question1(改)_edition

    由于上个版本问题多多,而且测试情况略有呵呵,于是想想还是默默的改进了一个版本。

    • input类

    首先呢,是作为输入项的实体类input。

    对比之前的版本,新版本(姑且称其为edition2)加强了operation对input中属性的依赖。

    同时,算是理清了operation类中的思路(至少个人感觉是比上一个版本更容易看懂),尤其是在对参数的操作和处理方面。

     1 package com.Phantom;
     2 
     3 import java.util.ArrayList;
     4 import java.util.HashMap;
     5 import java.util.List;
     6 import java.util.Map;
     7 import java.util.Map.Entry;
     8 
     9 public class inputs {
    10     public int times;
    11     public String words;
    12     EntryComparator eCompara=new EntryComparator();
    13     Map<String, Integer>map=new HashMap<String, Integer>();
    14     List<Entry<String, Integer>>list=new ArrayList<Map.Entry<String,Integer>>();
    15 
    16     public int getTimes() {
    17         return times;
    18     }
    19 
    20     public String getWords() {
    21         return words;
    22     }
    23 
    24     public void setWords(String words) {
    25         this.words = words;
    26     }
    27 
    28     public inputs() {
    29     }
    30 }

     

    • operation类

        operation类中优化了功能,主要解决了以下几个问题:

      1. 当只输入空格、tab或者什么都不输直接在控制台回车被识别为单词的情况
      2. 当首字符输入空格、tab的被识别单词的情况
      3. 在输入字符串过程中单词间输入多个空格的情况
      4. 单词输入间输入tab导致相邻单词通过tab链接作为一个单词识别的情况
      5. ......(可能还有其他的,不过都是对于tab、空格之类的问题)
     1 package com.Phantom;
     2 
     3 import java.util.ArrayList;
     4 import java.util.Collections;
     5 import java.util.Comparator;
     6 import java.util.List;
     7 import java.util.Map.Entry;
     8 import java.util.Scanner;
     9 import java.util.Set;
    10 
    11 
    12 public  class operation {
    13     inputs i=new inputs();
    14     public String entery(String word){
    15         //Scanner in=new Scanner(System.in);
    16         //i.setWords(words);
    17         i.setWords(word);
    18         /*(1)
    19          * .trim删除输入时句首和句尾空格
    20          * 但是无法处理只输入空格、tab或者什么都不输入的情况
    21          * (当只输入空格或者tab时将其转换为什么都不输入情况处理)
    22          * */
    23         //String[] items = i.words.trim().split("\s+|[ ]");//(1)
    24         String[] items=word.trim().split("\s+|[ ]");
    25         
    26         for(String s:items){
    27             if(i.map.containsKey(s)){
    28                 i.map.put(s, i.map.get(s)+1);
    29             }
    30             else{
    31                 i.map.put(s, 1);
    32             }
    33         }
    34         for(Entry<String, Integer>entry:i.map.entrySet()){
    35             /*(2)
    36              * 用于处理(1)中无法处理的情况
    37              * 由于(1)的转换将只输入空格或者tab转换为什么都不输入(即控制台下直接回车)的情况,判断键值对是否为空
    38              * */
    39             if(entry.getKey().isEmpty()){//(2)
    40                 System.out.println("什么单词都没有输入");
    41                 break;
    42             }
    43             else{
    44                 i.list.add(entry);
    45             }
    46         }
    47         Collections.sort(i.list, i.eCompara);
    48         /*(3)
    49          * 输出(1)(2)情况时的处理结果
    50          * */
    51         if(i.list.isEmpty()){//(3)
    52             System.out.println("null"+"		"+"null");
    53         }
    54         System.out.println("单词"+"		"+"频率");
    55         for (Entry<String, Integer> obj : i.list) {
    56             i.times=obj.getValue();
    57             System.out.println(obj.getKey() + "		" + i.getTimes());
    58             
    59         }
    60         i.list.clear();
    61         i.map.clear();
    62         return null;
    63     }
    64 
    65 }
    • EntryComparator类

        好吧,这个排序的倒是没怎么动,主要就是把声明集成到input类里面去了。

     1 /**
     2  * 
     3  */
     4 package com.Phantom;
     5 
     6 import java.util.Comparator;
     7 import java.util.Map.Entry;
     8 
     9 class EntryComparator implements Comparator<Entry<String, Integer>> {
    10 
    11     public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
    12         return o1.getValue() > o2.getValue() ? -1 : 0;
    13     }
    14 
    15 }

     

    • 测试类TestingOperation

        这个版本最大的改动就是测试类了,在放弃了断言之后,整个项目的覆盖率终于到达了可喜可贺的100%

      1 package com.Phantom;
      2 
      3 import static org.junit.Assert.*;
      4 
      5 import java.util.Collections;
      6 
      7 import junit.framework.TestCase;
      8 
      9 import org.junit.After;
     10 import org.junit.Before;
     11 import org.junit.Test;
     12 
     13 public class TestingOperation  extends TestCase{
     14     private operation o1;
     15     private inputs i1;
     16 
     17     @Before
     18     public void setUp() throws Exception {
     19          o1=new operation();
     20          i1=new inputs();
     21     }
     22     @After
     23     protected void tearDown() throws Exception {
     24         // TODO Auto-generated method stub
     25         super.tearDown();
     26     }
     27      @Test
     28     public void testOperation() {
     29          
     30          /*
     31           * 只输入空格
     32           * */
     33          System.out.println("只输入空格>>>");
     34          i1.setWords(" ");
     35          o1.entery(i1.getWords());
     36          System.out.println("
    "+"输入为:"+i1.getWords());
     37          System.out.println("--------------------------------------------");
     38          
     39          /*
     40           * 只输入tab
     41           * */
     42          System.out.println("只输入tab>>>");
     43          i1.setWords("    ");
     44          o1.entery(i1.getWords());
     45          System.out.println("
    "+"输入为:"+i1.getWords());
     46          System.out.println("--------------------------------------------");
     47          
     48          /*
     49           * 什么都不输入(控制台下直接回车)
     50           * */
     51          System.out.println("什么都不输入(控制台下直接回车)>>>");
     52          i1.setWords("");
     53          o1.entery(i1.getWords());
     54          System.out.println(i1.getWords());
     55          System.out.println("
    "+"输入为:"+i1.getWords());
     56          System.out.println("--------------------------------------------");
     57 
     58          /*
     59           * 开头为空格
     60           * */
     61          System.out.println("开头为空格>>>");
     62          i1.setWords(" a a a s s d");
     63          o1.entery(i1.getWords());
     64          System.out.println("
    "+"输入为:"+i1.getWords());
     65          System.out.println("--------------------------------------------");
     66          
     67          /*
     68           * 开头为tab
     69           * */
     70          System.out.println("开头为tab>>>");
     71          i1.setWords("    a a a s s d");
     72          o1.entery(i1.getWords());
     73          System.out.println("
    "+"输入为:"+i1.getWords());
     74          System.out.println("--------------------------------------------");
     75          
     76          /*
     77           * 中间多空格
     78           * */
     79          System.out.println("中间多空格>>>");
     80          i1.setWords("a a       a     s     s  d");
     81          o1.entery(i1.getWords());
     82          System.out.println("
    "+"输入为:"+i1.getWords());
     83          System.out.println("--------------------------------------------");
     84          
     85          /*
     86           * 中间tab
     87           * */
     88          System.out.println("中间多tab>>>");
     89          i1.setWords("a         a     a s     s d");
     90          o1.entery(i1.getWords());
     91          System.out.println("
    "+"输入为:"+i1.getWords());
     92          System.out.println("--------------------------------------------");
     93          
     94          /*
     95           * 末尾多空格
     96           * */
     97          System.out.println("末尾多空格>>>");
     98          i1.setWords("a a a s s d                 ");
     99          o1.entery(i1.getWords());
    100          System.out.println("
    "+"输入为:"+i1.getWords());
    101          System.out.println("--------------------------------------------");
    102          
    103          /*
    104           * 末尾多tab
    105           * */
    106          System.out.println("末尾多tab>>>");
    107          i1.setWords("a a a s s d            ");
    108          o1.entery(i1.getWords());
    109          System.out.println("
    "+"输入为:"+i1.getWords());
    110          System.out.println("--------------------------------------------");
    111          
    112          /*
    113           * 混合
    114           * */
    115          System.out.println("混合>>>");
    116          i1.setWords("              a         a    a    s s d         ");
    117          o1.entery(i1.getWords());
    118          System.out.println("
    "+"输入为:"+i1.getWords());
    119          System.out.println("--------------------------------------------");
    120          
    121          /*
    122           * 正常
    123           * */
    124          System.out.println("正常>>>");
    125          i1.setWords("a a a s s d");
    126          o1.entery(i1.getWords());
    127          System.out.println("
    "+"输入为:"+i1.getWords());
    128          System.out.println("--------------------------------------------");
    129          
    130          /*
    131           * 正常
    132           * */
    133          System.out.println("正常>>>");
    134          i1.setWords("a s s s d");
    135          o1.entery(i1.getWords());
    136          System.out.println("
    "+"输入为:"+i1.getWords());
    137          System.out.println("--------------------------------------------");
    138          
    139      }
    140 }

     

    junit

     

    运行结果

    覆盖率(改变测试方法后终于达到可喜可贺的100%了啊哈哈)

    ---------------------------------------------------------------------------------------

    ---------------------------------------The-End---------------------------------------

    ---------------------------------------------------------------------------------------

     

  • 相关阅读:
    hdu1542线段树+离散化+扫描线
    Codeforces Round #373 (Div. 2)
    Codeforces Round #381 (Div. 2)
    Codeforces Round #352 (Div. 2)
    CodeForces
    poj3311 状压dp+floyd
    CodeForces 385 D.Bear and Floodlight 状压DP
    Codeforces Round #299 (Div. 2)D. Tavas and Malekas
    Tavas and Karafs 二分+结论
    ThikPHP3.1 常用方法(one)
  • 原文地址:https://www.cnblogs.com/Phantom-void/p/5348444.html
Copyright © 2011-2022 走看看