博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
词频统计单元测试--------第二版
阅读量:5037 次
发布时间:2019-06-12

本文共 3844 字,大约阅读时间需要 12 分钟。

  在上一次的单元测试的基础上,我单独写了一个测试类对 单词树进行遍历的方法sortAndOutput() 进行测试,下图是这个方法的展示,他返回的是一个Map,Map里面存的是对应的单词以及其出现的次数。

/*     * 对文章用generateCharTree()函数生成单词树,在对生成的单词树进行排序并且输出     */    public Map sortAndOutput(String filePath) throws IOException {        reader = new FileReader(filePath);        buffer = new BufferedReader(reader);        char c[] = new char[128]; // 防止读入一行太长而出现溢出的情况        int len;        String temp = ""; // 存储buffer读出的字符        String lastWord = ""; // 若读出的最后一个字符是字母,lastWord存储那个字符所在的单词,lastWord就被加到下一轮的temp中        while ((len = buffer.read(c)) > 0) {            temp = ""; // 清空上一轮temp的内容            temp += lastWord;            for (int i = 0; i < len; i++) {                temp += c[i];            }            lastWord = ""; // 清空上一轮lastword的内容            if (Character.isLetter(c[len - 1])) { // 当128个字符的最后一个字符为字母时,就得分情况讨论                int j, t;                for (j = len - 1, t = 0; Character.isLetter(c[j]); j--, t++)                    ; // t代表最后一个字符(c[len-1])为字符时,前面有几个连续的字符                temp = temp.substring(0, temp.length() - t); // 当检测到最后一个字符为字母时,直接将最后一个字符所在的单词剔除本轮的temp,而转接到下一轮的temp中                for (int k = j + 1; k < len; k++) {                    lastWord += c[k];                }            }            root = generateCharTree(temp);        }        List
list = new ArrayList
(); searchTree(list, root); // 对生成的单词树按照单词的次数逆向排序排序 Collections.sort(list, new Comparator
() { @Override public int compare(Object o1, Object o2) { Word word1 = (Word) o1; Word word2 = (Word) o2; return word2.getNum() - word1.getNum(); } }); buffer.close(); reader.close(); root=new CharTreeNode(); //但对于输入的是目录时,对每篇文章建立的树统计完后,应当初始化这棵树,便于下篇文章建树 // System.out.println("单词\t数量"); Map
map=new HashMap
(); for (int i = 0; i < list.size(); i++) { //System.out.println(((Word) list.get(i)).getWord() + "\t" + ((Word) list.get(i)).getNum()); map.put(((Word) list.get(i)).getWord(), ((Word) list.get(i)).getNum()); } return map; }

下面是我写的测试类,我将期待的结果存到Map中,然后将通过传入的参数的结果和Map进行比对。

@RunWith(Parameterized.class)public class CountWordFreqTest {    private CountWordFreq ctf = new CountWordFreq();    private String filePath;    private static Map map = new HashMap
(); public CountWordFreqTest(String filePath, Map map) { this.filePath = filePath; this.map = map; } @Parameters public static Collection data() { // 下面是一些测试样例 map.put("very", 2); map.put("english", 1); map.put("exteremely", 1); map.put("is", 1); map.put("my", 1); map.put("poor", 1); return Arrays.asList(new Object[][] { // 这儿的Map是填充数据后的Map { "f:/document/cs.txt", map }, { "f:/document/hello.txt", map }, { null, map }, }); } @Test public void testInputFilePathtest() throws IOException { Map rsmap = ctf.sortAndOutput(filePath); Assert.assertEquals("map should match rsmap", map, rsmap); //Assert.assertNull("空指针异常", rsmap); }}

结果的截图如下:

 

 

说明第二个文件的输出与期望值不符,第三个出现空指针异常。

使用单元测试的感受:测试类中的构造方法的参数数量和类型必须和  public static Collection data()方法中Arrays.asList(new Object[][] { 的元素数量对应。不然会报参数错误异常。

 

PSP:

项目类型:个人项目

项目完成情况:已完成

项目改进:已变更

项目日期:2016.9.24----2.16.9.26

类别

内容

开始时间

结束时间

间断时间

净时间

学习

Junit的使用

8:03

11:26

12

191

测试编码

对词频统计中的输入方式测试

5:00

8:48

8

220

更正

单独写一个测试类,对(遍历排序)方法进行测试

 

9:30

3:33

 

12:03

5:32

 

43

229

总结

总结Junit中的各种注解的用法。

5:40

5:43

0

3

https://git.coding.net/muziliquan/classwork03.git

ssh:git@git.coding.net:muziliquan/classwork03.git

git://git.coding.net/muziliquan/classwork03.git

转载于:https://www.cnblogs.com/liquan/p/5909862.html

你可能感兴趣的文章
百度编辑器UEditor ASP.NET示例Demo 分类: ASP.NET...
查看>>
JAVA 技术类分享(二)
查看>>
android客户端向服务器发送请求中文乱码的问
查看>>
UOJ#220. 【NOI2016】网格 Tarjan
查看>>
Symfony翻译教程已开课
查看>>
Python模块之pickle(列表,字典等复杂数据类型与二进制文件的转化)
查看>>
通过数据库表反向生成pojo类
查看>>
css_去掉默认样式
查看>>
TensorFlow2.0矩阵与向量的加减乘
查看>>
NOIP 2010题解
查看>>
javascript中的each遍历
查看>>
String中各方法多数情况下返回新的String对象
查看>>
浅谈tcp粘包问题
查看>>
UVA11524构造系数数组+高斯消元解异或方程组
查看>>
排序系列之——冒泡排序、插入排序、选择排序
查看>>
爬虫基础
查看>>
jquery.lazyload延迟加载图片第一屏问题
查看>>
HDU 1011 Starship Troopers (树形DP)
查看>>
手把手教你写DI_1_DI框架有什么?
查看>>
.net常见的一些面试题
查看>>