词频统计1.1版——单元测试

前言:网上讲c语言单元测试的内容确实不太多,很多讲单元测试的都注重讲了单元测试的重要性、cppunit、junit的用法,但是没找到具体该如何进行单元测试的帖子,这就导致这几天知道了单元测试很重要,却不知道怎么写好这个测试,网上教程里的例子都是Assert.AreEqual,所以目前的收获很有限,试着在vs里写了几个测试,但是感觉并没有抓住单元测试的精髓,迷惑的很,希望老师多多指点。不过很神奇的一点是,我很深刻的认识到了单元测试的实用性,因为我以前写程序的时候,整体编译运行的时候如果出错了,自己又找不到错误,就会重新开一个文件,写几句话来试试程序里的某些语句好不好使,我那会儿是用来排查错误的,接触了单元测试以后才意识到我之前的行为也算单元测试的一种吧,所以觉得单元测试肯定很关键。

我理解的单元测试就是针对程序里的模块编写一些例子,将预期的结果和实际输出的结果相比较来判断这个模块是否正常运作,因为去掉了模块之间的联系,由人为的赋予数值,这样就可以将一个个模块独立诊断,可以很大程度上保证整个程序的正确性。c语言的话,所说的模块大概就是指用到的函数吧,所以就写了几个针对用到的函数的测试。

https:https://git.coding.net/gongcr/word-frequency.git

ssh:[email protected]:gongcr/word-frequency.git

git:git://git.coding.net/gongcr/word-frequency.git

代码如下:

using namespace Microsoft::VisualStudio::CppUnitTestFramework;

namespace UnitTest1
{
	TEST_CLASS(UnitTest1)
	{
	public:

		TEST_METHOD(med3_Test)
		{
			struct fre_word w[3] = { { 10,"a" },{ 15,"b" },{ 20,"c" } };
			int i=med3(w, 0, 1, 2);

			Assert::AreEqual(w[i].num , 15);
		}
		TEST_METHOD(swapf_Test)
		{
			struct fre_word w[2] = { { 10,"a" },{ 15,"b" } };
			swapf(w, 0, 1);
			Assert::AreEqual(w[0].num,15);
		}
		TEST_METHOD(vecswap_Test)
		{
			struct fre_word w[8] = { { 10,"a" },{ 15,"b" } ,{ 20,"c" },{ 25,"d" } ,{ 30,"e" },{ 35,"f" } ,{ 40,"g" },{ 45,"h" } };
			vecswap(w, 0, 4,2);
			Assert::AreEqual(w[0].num, 30);
			Assert::AreEqual(w[0].wd, "e");
		}
		TEST_METHOD(qsort7_Test)
		{
			struct fre_word w[8] = { { 45,"h" } ,{ 15,"b" } ,{ 20,"c" },{ 10,"a" },{ 30,"e" },{ 35,"f" } ,{ 25,"d" } ,{ 40,"g" } };
			qsort7(w, 0, 7);
			Assert::AreEqual(w[0].num, 10);
			Assert::AreEqual(w[0].wd, "a");
		}
	};
}

  一共包含4个测试,med3_Test用来测试三数取中这个函数,、swapf_Test用来测试两个结构体交换的函数、vecswap_Test测试结构体批量交换、qsort7_Test测试快速排序算法。

测试结果:

顺利通过。

但是在vs里没找到代码覆盖率那个功能,暂时缺这一项。

官网里教程是这样的:

而我的vs里是这个样子:

单元测试psp:

9月26日

类别 内容 开始时间 中断时间 结束时间 净时间
前期准备 看书查资料 15:00 0 15:22 22
前期准备 上网查单元测试 15:30 12 17:20 98
前期准备 上网查资料/练习vs单元测试 18:10 20 21:20 170
操作 编写单元测试 21:20 5 22:15 50

9月27日

类别 内容 开始时间 中断时间 结束时间 净时间
操作 重新编写单元测试 8:55 5 10:22 82
操作 修改测试 12:00 0 12:40 40
后期 写博客 16:00 0 16:28 28
时间: 2024-11-10 14:53:03

词频统计1.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] 待测单

词频统计多需求版

下面针对词频统计的不同功能要求给出部分代码和截图,具体代码请访问博客下方提供的链接. 功能1. 小文件输入. 为表明程序能跑,结果真实而不是迫害老五,请他亲自键盘在控制台下输入命令. 部分代码: public static void main(String[] args) throws IOException { FileReader file; BufferedReader buffer; Map<String, Integer> hashMap = new HashMap<Strin

词频统计(WEB版)

通过点击浏览按钮输入文件: 点击查询按钮后返回结果: 前台代码: 1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 2 3 <!DOCTYPE html> 4 5 <html xmlns="http://www.w3.org/1999/xhtm

效能分析——词频统计1.1版

前言:在寻错及修改两天之后,发现之前的程序不能处理大文件的原因在于所写的排序部分,于是做了两件事: 第一是修改了所写的quick排序部分,现在可以处理大文件了: 第二是学习了http://www.blogjava.net/killme2008/archive/2010/09/08/quicksort_optimized.html 中写的关于快速排序算法的优化改进,也移植到了我的程序里试了试. 分别使用两种方法处理同一份文件,大小是1M,不同的词有17000,这个大小的文件之前是一处理就崩溃的,算

词频统计-单元测试

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

C语言实现词频统计——第二版

原需求 1.读取文件,文件内包可含英文字符,及常见标点,空格级换行符. 2.统计英文单词在本文件的出现次数 3.将统计结果排序 4.显示排序结果 新需求: 1.小文件输入. 为表明程序能跑 2.支持命令行输入英文作品的文件名 3. 支持命令行输入存储有英文作品文件的目录名,批量统计 4. 从控制台读入英文单篇作品,重定向输出 代码实现: 在原代码的基础上稍做了修改,使之可以批量读取文件夹下的所有文件,所以加了一个mode来判断是单个文件输入还是文件夹输入,来不及整理程序,所以现在程序有点丑.这次

词频统计单元测试

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

java词频统计——web版支持

需求概要: 1.把程序迁移到web平台,通过用户上传TXT的方式接收文件. 2.用户直接输入要统计的文本,服务器返回结果 3.在页面上给出链接 (如果有封皮.作者.字数.页数等信息更佳)或表格,展示经典英文小说词频统计结果: 4.支持用户自定义单词分隔符: 5.词汇范围对比(额外项). 分析和设计: 1.创建web工程,利用servlet上传文件的技术实现用户向服务器上传文件.页面设置表单类型为enctype="multipart/form-data",创建文件上传文本框<inp

词频统计效能测试---------第二版

在第一次的词频统计中,对JProfile 款软件不是很熟悉,感觉数据不是很准确,在程序启动时JProfile总是提示Java虚拟机已退出,后来经过查阅知道解决方案:截图如下   要将 keep vm alive 勾选上. 程序总体总体情况如下: 当程序运行之后,cpu和内存的使用几乎在同一时间有一个明显的上升过程. 各个对象使用情况如下 下面是热点函数的展示,这也和我在程序中运用时间戳确定建树函数[generateCharTree()]占用时间较多的情况相符.因为对这个程序来说主要时间都花费在单