software_testing_work2_question1(改)_edition
由于上个版本问题多多,而且测试情况略有呵呵,于是想想还是默默的改进了一个版本。
- input类
首先呢,是作为输入项的实体类input。
对比之前的版本,新版本(姑且称其为edition2)加强了operation对input中属性的依赖。
同时,算是理清了operation类中的思路(至少个人感觉是比上一个版本更容易看懂),尤其是在对参数的操作和处理方面。
package com.Phantom; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry; public class inputs {
public int times;
public String words;
EntryComparator eCompara=new EntryComparator();
Map<String, Integer>map=new HashMap<String, Integer>();
List<Entry<String, Integer>>list=new ArrayList<Map.Entry<String,Integer>>(); public int getTimes() {
return times;
} public String getWords() {
return words;
} public void setWords(String words) {
this.words = words;
} public inputs() {
}
}
- operation类
operation类中优化了功能,主要解决了以下几个问题:
- 当只输入空格、tab或者什么都不输直接在控制台回车被识别为单词的情况
- 当首字符输入空格、tab的被识别单词的情况
- 在输入字符串过程中单词间输入多个空格的情况
- 单词输入间输入tab导致相邻单词通过tab链接作为一个单词识别的情况
- ......(可能还有其他的,不过都是对于tab、空格之类的问题)
package com.Phantom; import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set; public class operation {
inputs i=new inputs();
public String entery(String word){
//Scanner in=new Scanner(System.in);
//i.setWords(words);
i.setWords(word);
/*(1)
* .trim删除输入时句首和句尾空格
* 但是无法处理只输入空格、tab或者什么都不输入的情况
* (当只输入空格或者tab时将其转换为什么都不输入情况处理)
* */
//String[] items = i.words.trim().split("\\s+|[ ]");//(1)
String[] items=word.trim().split("\\s+|[ ]"); for(String s:items){
if(i.map.containsKey(s)){
i.map.put(s, i.map.get(s)+1);
}
else{
i.map.put(s, 1);
}
}
for(Entry<String, Integer>entry:i.map.entrySet()){
/*(2)
* 用于处理(1)中无法处理的情况
* 由于(1)的转换将只输入空格或者tab转换为什么都不输入(即控制台下直接回车)的情况,判断键值对是否为空
* */
if(entry.getKey().isEmpty()){//(2)
System.out.println("什么单词都没有输入");
break;
}
else{
i.list.add(entry);
}
}
Collections.sort(i.list, i.eCompara);
/*(3)
* 输出(1)(2)情况时的处理结果
* */
if(i.list.isEmpty()){//(3)
System.out.println("null"+"\t\t"+"null");
}
System.out.println("单词"+"\t\t"+"频率");
for (Entry<String, Integer> obj : i.list) {
i.times=obj.getValue();
System.out.println(obj.getKey() + "\t\t" + i.getTimes()); }
i.list.clear();
i.map.clear();
return null;
} }
- EntryComparator类
好吧,这个排序的倒是没怎么动,主要就是把声明集成到input类里面去了。
/**
*
*/
package com.Phantom; import java.util.Comparator;
import java.util.Map.Entry; class EntryComparator implements Comparator<Entry<String, Integer>> { public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
return o1.getValue() > o2.getValue() ? -1 : 0;
} }
- 测试类TestingOperation
这个版本最大的改动就是测试类了,在放弃了断言之后,整个项目的覆盖率终于到达了可喜可贺的100%
package com.Phantom; import static org.junit.Assert.*; import java.util.Collections; import junit.framework.TestCase; import org.junit.After;
import org.junit.Before;
import org.junit.Test; public class TestingOperation extends TestCase{
private operation o1;
private inputs i1; @Before
public void setUp() throws Exception {
o1=new operation();
i1=new inputs();
}
@After
protected void tearDown() throws Exception {
// TODO Auto-generated method stub
super.tearDown();
}
@Test
public void testOperation() { /*
* 只输入空格
* */
System.out.println("只输入空格>>>");
i1.setWords(" ");
o1.entery(i1.getWords());
System.out.println("\n"+"输入为:"+i1.getWords());
System.out.println("--------------------------------------------"); /*
* 只输入tab
* */
System.out.println("只输入tab>>>");
i1.setWords(" ");
o1.entery(i1.getWords());
System.out.println("\n"+"输入为:"+i1.getWords());
System.out.println("--------------------------------------------"); /*
* 什么都不输入(控制台下直接回车)
* */
System.out.println("什么都不输入(控制台下直接回车)>>>");
i1.setWords("");
o1.entery(i1.getWords());
System.out.println(i1.getWords());
System.out.println("\n"+"输入为:"+i1.getWords());
System.out.println("--------------------------------------------"); /*
* 开头为空格
* */
System.out.println("开头为空格>>>");
i1.setWords(" a a a s s d");
o1.entery(i1.getWords());
System.out.println("\n"+"输入为:"+i1.getWords());
System.out.println("--------------------------------------------"); /*
* 开头为tab
* */
System.out.println("开头为tab>>>");
i1.setWords(" a a a s s d");
o1.entery(i1.getWords());
System.out.println("\n"+"输入为:"+i1.getWords());
System.out.println("--------------------------------------------"); /*
* 中间多空格
* */
System.out.println("中间多空格>>>");
i1.setWords("a a a s s d");
o1.entery(i1.getWords());
System.out.println("\n"+"输入为:"+i1.getWords());
System.out.println("--------------------------------------------"); /*
* 中间tab
* */
System.out.println("中间多tab>>>");
i1.setWords("a a a s s d");
o1.entery(i1.getWords());
System.out.println("\n"+"输入为:"+i1.getWords());
System.out.println("--------------------------------------------"); /*
* 末尾多空格
* */
System.out.println("末尾多空格>>>");
i1.setWords("a a a s s d ");
o1.entery(i1.getWords());
System.out.println("\n"+"输入为:"+i1.getWords());
System.out.println("--------------------------------------------"); /*
* 末尾多tab
* */
System.out.println("末尾多tab>>>");
i1.setWords("a a a s s d ");
o1.entery(i1.getWords());
System.out.println("\n"+"输入为:"+i1.getWords());
System.out.println("--------------------------------------------"); /*
* 混合
* */
System.out.println("混合>>>");
i1.setWords(" a a a s s d ");
o1.entery(i1.getWords());
System.out.println("\n"+"输入为:"+i1.getWords());
System.out.println("--------------------------------------------"); /*
* 正常
* */
System.out.println("正常>>>");
i1.setWords("a a a s s d");
o1.entery(i1.getWords());
System.out.println("\n"+"输入为:"+i1.getWords());
System.out.println("--------------------------------------------"); /*
* 正常
* */
System.out.println("正常>>>");
i1.setWords("a s s s d");
o1.entery(i1.getWords());
System.out.println("\n"+"输入为:"+i1.getWords());
System.out.println("--------------------------------------------"); }
}
junit
运行结果
覆盖率(改变测试方法后终于达到可喜可贺的100%了啊哈哈)
---------------------------------------------------------------------------------------
---------------------------------------The-End---------------------------------------
---------------------------------------------------------------------------------------
software_testing_work2_question1(改)_edition的更多相关文章
- 6.在MVC中使用泛型仓储模式和依赖注入实现增删查改
原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...
- Linux.NET实战手记—自己动手改泥鳅(上)
各位读者大家好,不知各位读者有否阅读在下的前一个系列<Linux.NET 学习手记>,在前一个系列中,我们从Linux中Mono的编译安装开始,到Jexus服务器的介绍,以及如何在Linu ...
- Linux.NET实战手记—自己动手改泥鳅(下)
在上回合中,我们不痛不痒的把小泥鳅的数据库从只能供在Windows下运行的Access数据库改为支持跨平台的MYSQL数据库,毫无营养的修改,本回合中,我们将把我们修改后得来的项目往Linux中部署. ...
- Android 打开方式选定后默认了改不回来?解决方法(三星s7为例)
Android 打开方式选定后默认了改不回来?解决方法(三星s7为例) 刚刚在测试东西,打开一个gif图,然后我故意选择用支付宝打开,然后...支付宝当然不支持,我觉得第二次打开它应该还会问我,没想到 ...
- 把PDF的底色改成护眼色,这样读起文章来就不是很累了······
PDF格式背景改变方法如下: 打开PDF 点击 编辑 ->首选项->辅助工具->选中"替换文档颜色"和" 自定义颜色"->将背景颜色改成 ...
- 3.EF 6.0 Code-First实现增删查改
原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-entity-framework-5-0-code- ...
- 4.在MVC中使用仓储模式进行增删查改
原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-using-the-repository-pattern-in-mvc/ 系列目录: ...
- 5.在MVC中使用泛型仓储模式和工作单元来进行增删查改
原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...
- EF里单个实体的增查改删以及主从表关联数据的各种增删 改查
本文目录 EF对单个实体的增查改删 增加单个实体 查询单个实体 修改单个实体 删除单个实体 EF里主从表关联数据的各种增删改查 增加(增加从表数据.增加主从表数据) 查询(根据主表找从表数据.根据从表 ...
随机推荐
- FPGA 相同模块 VIVADO synthesis综合后
显示所用的LUT as Memory结果不一致可能是什么原因导致的?
- postgresql Delete+ join
using tablename as alias DELETE FROM tv_episodes USING tv_episodes AS ed LEFT OUTER JOIN data AS nd ...
- web网站 Vs 移动App 谁更能打动你?之 产品经理篇
从web1.0到web2.0,由单调变为丰富——无论是内容,呈现,还是用户交互,当我们(接触互联网只有五六年的人)可能还沉浸在这绚丽多彩,啧啧称奇web交互体验之中,移动App不知道在什么时候已经悄然 ...
- bzoj4213: 贪吃蛇
题意:给定一个网格,有一些格子是障碍不用管,剩余的是空地,你要用一些起点和终点在边界上的路径或环来完全覆盖掉空地,如果使用第一种,会付出1的代价,求最小代价,不能覆盖则输出-1. 现在看到网格而且数据 ...
- iOS开发_MVC设计模式
MVC,是一种主流的设计模式,本博文总结一下自己对MVC的看法和理解,浅知拙见,难登大雅之堂,如有欠缺遗漏,还望各位指正. MVC是Model-View-Controller 的缩写,Model 是指 ...
- bzoj 3211: 花神游历各国
#include<cstdio> #include<cmath> #include<iostream> #define M 100006 using namespa ...
- Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) C.Ray Tracing (模拟或扩展欧几里得)
http://codeforces.com/contest/724/problem/C 题目大意: 在一个n*m的盒子里,从(0,0)射出一条每秒位移为(1,1)的射线,遵从反射定律,给出k个点,求射 ...
- DIV的不能包住子集解决办法
在div的样式中加上:overflow:hidden,或者float:left或right
- java 读取properties文件
import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class Ge ...
- C++ 11 lambda
转载:http://www.cnblogs.com/kedebug/p/3224561.html lambda 表达式的简单语法如下:[capture] (parameters) -> retu ...