zoukankan      html  css  js  c++  java
  • 词频统计的单元测试

      由于没有经验,我下了很多c++测试软件:比如csewin,c++test,check,cppunit但是都不会用。请教同学后才知道下载cppunit是要用vs安装。而不是看它自带的说明。

    我知道了多看技术博客的重要性,能节省很多时间。

      重新安装好cppunit后,用vs进行设置。

      单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。

      单元测试不但会使你的工作完成得更轻松,而且会令你的设计变得更好,甚至大大减少你花在调试上面的时间。

      首先看cmp函数,返回结果为指向函数的指针。为了qsort排序函数做准备。

    1 int cmp(const void *a, const void *b)
    2 {
    3     List *p1 = (List*)a;
    4     List *p2 = (List*)b;
    5     if (p1->num != p2->num)
    6         return p2->num - p1->num;
    7     else
    8         return strcmp(p1->w, p2->w);
    9 }

    主函数

     1 int main()
     2 {
     3     char word[MAX];
     4     FILE *bfp;
     5     FILE *out;
     6     char c;
     7     int i, k, n;
     8     struct tnode *root;
     9     root = NULL;
    10     bfp = fopen("c://special.txt", "r");
    11     while ((c = fgetc(bfp)) != EOF) {
    12         ungetc(c, bfp);
    13         for (i = 0; (c = fgetc(bfp)) != ' '&&c != '
    '&&c != EOF; i++) {
    14             if ((c >= 'A'&&c <= 'Z') || (c >= 'a'&&c <= 'z')) {
    15                 c = tolower(c);
    16                 word[i] = c;
    17             }
    18             else
    19                 break;
    20         }
    21         word[i] = '';
    22         if (strlen(word)>0)
    23             root = treewords(root, word);
    24     }
    25     treeprint(root);
    26     for (i = 0; i<curr; i++) {
    27         list[i].num = arr[i]->count;
    28         strcpy(list[i].w, arr[i]->word);
    29     }
    30     n = curr;
    31     qsort(list, n + 1, sizeof(list[0]), cmp);
    32     out = fopen("wordfreq.txt", "w");
    33     for (k = 0; k<curr; k++) {
    34         fprintf(out, "%s %d
    ", list[k].w, list[k].num);
    35     }
    36     for (k = 0; k<100; k++) {
    37         printf("%s %d
    ", list[k].w, list[k].num);
    38     }
    39     fclose(bfp);
    40     fclose(out);
    41     return 0;
    42 }
    43 struct tnode *treewords(struct tnode *p, char *w)
    44 {
    45     int cond;
    46     if (p == NULL) {
    47         p = (struct tnode*)malloc(sizeof(struct tnode));
    48         strcpy(p->word, w);
    49         p->count = 1;
    50         p->left = p->right = NULL;
    51     }
    52     else if ((cond = strcmp(w, p->word)) == 0) {
    53         p->count++;
    54     }
    55     else if (cond<0) {
    56         p->left = treewords(p->left, w);
    57     }
    58     else
    59         p->right = treewords(p->right, w);
    60     return (p);
    61 }
    62 void treeprint(struct tnode *p)
    63 {
    64     if (p != NULL) {
    65         treeprint(p->left);
    66         arr[curr++] = p;
    67         treeprint(p->right);
    68     }
    69 }
    View Code

    运行结果

    测试方法

    1 #ifndef __TEST_H_  
    2 #define __TEST_H_  
    3 
    4 int cmp(const void *a, const void *b);
    5 
    6 #endif 
    View Code

    测试结果

      因为c语言无法用JAVA的eclipse有集成的测试工具,所以安装真的很花时间。

    9月26

    类别 开始时间 结束时间 中断时间 净时间

    查找资料

    13:30 17:30 10m 200m
    安装程序 19:00 21:00 10m 100m
    查看单元测试资料 22:00 23:00 0m 60m

    9月27日

    类别 开始时间 结束时间 中断时间 共用时
    安装vs cppunit及熟悉环境 9:00 11:20 10m 130m
    编写程序 14:30 15:00 0m 30m
    写博客 18:00 18:40 0m 40m

                                     

  • 相关阅读:
    使用Chrome开发者工具研究JavaScript的垃圾回收机制
    Java JDK目录下的jmap和jhat工具的使用方式
    Java注解@Cacheable的工作原理
    使用Java JUnit框架里的@Rule注解的用法举例
    使用Java JUnit框架里的@SuiteClasses注解管理测试用例
    Java JUnit框架里@Category注解的工作原理
    使用SAP CRM mock框架进行单元测试的设计
    将ABAP透明表的定义(元数据)解析出来导入到剪切板(clipboard)里
    SAP ABAP Netweaver里的胖接口(fat interface)
    关于STM32的FLASH操作【转载】
  • 原文地址:https://www.cnblogs.com/brilliant2016/p/5917509.html
Copyright © 2011-2022 走看看