20160922-词频统计单元测试

对个人项目词频统计进行单元测试,使用工具是vs2015中的MS Test。

代码及单元测试版本控制:

HTTPS:https://git.coding.net/li_yuhuan/WordFrequency.git

SSH:[email protected]:li_yuhuan/WordFrequency.git

GIT:git://git.coding.net/li_yuhuan/WordFrequency.git

单元测试:

1.对一段字符串进行分割并将分割后的单词及其对应的频次存入Dictionary。

输入:

“My English is very very pool.”

期待输出:

{"my", 1},

{"english", 1},

{"is", 1},

{"very", 2},

{"pool", 1}

(1)对应单元代码片段

        static public void Frequency(string line)
        {
            List<string> words = new List<string>();
            string word = string.Empty;
            char[] split = { ‘ ‘, ‘,‘, ‘?‘, ‘?‘, ‘.‘, ‘。‘, ‘-‘, ‘—‘, ‘"‘, ‘:‘, ‘:‘, ‘\r‘, ‘\n‘, ‘(‘, ‘)‘, ‘“‘, ‘”‘ };

            words.AddRange(line.Split(split));

            foreach (string str in words)
            {
                if (str != "" && str != null)
                {
                    word = str.ToLower();

                    if (m_wordList.ContainsKey(word))
                    {
                        m_wordList[word] += 1;
                    }
                    else
                    {
                        m_wordList.Add(word, 1);
                    }
                }
            }
        }

(2)对应测试用例代码

        [TestMethod()]
        public void FrequencyTest()
        {
            string input = "My English is very very pool";
            Dictionary<string, int> expected = new Dictionary<string, int>()
            {
                {"my", 1},
                {"english", 1},
                {"is", 1},
                {"very", 2},
                {"pool", 1}
            };

            Program.Frequency(input);
            Dictionary<string, int> actual = Program.m_wordList;
            CollectionAssert.AreEqual(expected, actual);
        }

2.将传入的Dictionary进行排序,返回排序后的List

输入:

{"my", 1},

{"english", 1},

{"is", 1},

{"very", 2},

{"pool", 1}

期待输出:

{"very", 2},

{"my", 1},

{"english", 1},

{"is", 1},

{"pool", 1}

(1)对应单元代码片段

        static public List<KeyValuePair<string, int>> DictionarySort(Dictionary<string, int> dictionary)
        {
            List<KeyValuePair<string, int>> lst = new List<KeyValuePair<string, int>>(dictionary);

            if (dictionary.Count > 0)
            {
                lst.Sort(delegate (KeyValuePair<string, int> s1, KeyValuePair<string, int> s2)
                {
                    return s2.Value.CompareTo(s1.Value);
                });

                dictionary.Clear();

                Console.WriteLine("total  " + lst.Count + "  words\n");

                int k = 0;

                foreach (KeyValuePair<string, int> kvp in lst)
                {
                    if (k < m_top)
                    {
                        Console.WriteLine(kvp.Key + ":" + kvp.Value);
                        k++;
                    }
                }

                Console.WriteLine("----------------------------\n");

            }

            return lst;
        }

(2)对应测试用例代码

        [TestMethod()]
        public void DictionarySortTest()
        {
            Dictionary<string, int> input = new Dictionary<string, int>()
            {
                {"my", 1},
                {"english", 1},
                {"is", 1},
                {"very", 2},
                {"pool", 1}
            };

            List<KeyValuePair<string, int>> expected = new List<KeyValuePair<string, int>>(new Dictionary<string, int>()
            {
                {"very", 2},
                {"my", 1},
                {"english", 1},
                {"is", 1},
                {"pool", 1}
            });

            List<KeyValuePair<string, int>> actual = Program.DictionarySort(input);

            CollectionAssert.AreEqual(expected, actual);
        }

运行测试后的结果:

原有的代码有些并没有显示的返回值,所以有些方法增加了返回值便于与预期输出进行比较检验是否通过测试。

PSP:

日期 类别 内容 开始时间 结束时间 中断时间 净时间
9.27 学习 查询学习单元测试资料 13:32 14:40 16 52
9.27 修改函数 给一些没有返回值的函数增加返回值等 14:50 15:13 0 23
9.27 单元测试编码 编写单元测试代码 15:26 16:55 13 76
9.27 运行测试 运行单元测试 17:00 17:03 0 3
时间: 2024-10-24 19:15:50

20160922-词频统计单元测试的相关文章

词频统计单元测试

我这次用构造单词树的形式进行词频统计,此次的任务是对已有的程序进行单元测试.选用的工具是JUnit.它是基于测试驱动开发(TDD)原理的. 此次词频统计的主体思想是,每次读入文章中的128(自己设定)个字符(目的是防止溢出),将这些字符存储到一颗树中,树中的节点有一个存储词频的变量和一个指向子节点的数组(类似于c语言中的指针).最后遍历整棵树,按照词频进行排序. 下面是我的片段代码 下面这段代码是定义的节点的结构 class CharTreeNode{ int count=0; CharTree

Java实现的词频统计——单元测试

前言:本次测试过程中发现了几个未知字符,这里将其转化为十六进制码对其加以区分. 1)保存统计结果的Result文件中显示如图: 2)将其复制到eclipse环境下的切分方法StringTokenizer中却没有显示: 复制前: 复制后: 前后看似没有任何变化: 3)改动后的统计结果: 因此为了检测这个字符做了一个将其转化为十六进制码的小程序: 1 String t = "\0"; 2 String s = "\0"; 3 byte[] bbb = t.getByte

【week3】词频统计 单元测试

使用Eclipse 集成的Junit进行单元测试.单元测试的核心包括断言.注解. 测试代码如下: @BeforeClass // 针对所有测试,只执行一次,且必须为static void public static void setUpBeforeClass() throws Exception { System.out.println("in BeforeClass================"); } @AfterClass // 针对所有测试,只执行一次,且必须为static

词频统计单元测试--------第二版

在上一次的单元测试的基础上,我单独写了一个测试类对 单词树进行遍历的方法sortAndOutput() 进行测试,下图是这个方法的展示,他返回的是一个Map,Map里面存的是对应的单词以及其出现的次数. /* * 对文章用generateCharTree()函数生成单词树,在对生成的单词树进行排序并且输出 */ public Map sortAndOutput(String filePath) throws IOException { reader = new FileReader(filePa

词频统计-单元测试

我自己的单元测试没有弄出来,我用c编的,在visual studio中貌似实现不了单元测试,而李俞寰同学是用c#编写的词频统计,在vs2015中实现单元测试无比的方便,所以我请教了他并借鉴了一下. [TestMethod()] public void DictionarySortTest() { Dictionary<string,int>input=new Dictionary<string,int>() { {"you,1}, {"are",1},

java词频统计——改进后的单元测试

测试项目 博客文章地址:[http://www.cnblogs.com/jx8zjs/p/5862269.html] 工程地址:https://coding.net/u/jx8zjs/p/wordCount/git ssh://[email protected]:jx8zjs/wordCount.git 测试用例: 1. 1 My English is very very pool 2.地址 [http://www.gutenberg.org/files/2600/2600-0.txt] 待测单

结对项目 - 词频统计Ⅱ

目的与要求 代码复审练习 结对练习 编写单元测试 基于上一个结对项目的结果,读取小文本文件A_Tale_of_Two_Cities.txt 或者 大文本文件Gone_with_the_wind.txt,统计某一指定单词在该文本文件中出现的频率. 命令行格式: 提示符> Myapp.exe -f filename.txt -w word (PS:C++ 程序,Java 程序输出方式类似) 解释: 选项 -f 表示打开某一文件 选项 -w 表示统计其后单词在打开的文件中的频率 详细内容 开发语言:J

结对项目 - 词频统计

目的与要求 代码复审练习 结对练习 编写单元测试 基于作业3的结果,读取一个较小的文本文件A_Tale_of_Two_Cities.txt,统计该文件中的单词的频率,并将统计结果输出到当前目录下的 Result1.txt 文件. (第一阶段初稿完成该要求) 命令行格式: 提示符> Myapp.exe -f filename.txt > Result.txt (PS:C++ 程序,Java 程序输出方式类似) filename.txt 为前面下载的文件名. 解释: 选项 -f 表示后面跟文件名

WordCount优化——单词及词频统计

github地址 https://github.com/lzwk/WCpro PSP表格 PSP2.1 PSP阶段 预估耗时(分钟) 实际耗时(分钟) Planning 计划 10 20 · Estimate · 估计这个任务需要多少时间 10 15 Development 开发 500 480 · Analysis · 需求分析 (包括学习新技术) 80 100 · Design Spec · 生成设计文档 30 30 · Design Review · 设计复审 (和同事审核设计文档) 30