Windows 和 linux 下CUnit编译安装教程

本文大部分均参看以下链接,安装当中有些地方不详细,我添加了

转载参考  : https://blog.csdn.net/godmaycry/article/details/77480549

首先要安装mingw和msys,下载地址:点击打开链接

https://sourceforge.net/projects/mingw/files/Installer/   下载 mingw-get-setup.exe

linux 下的安装 :https://blog.csdn.net/field42zhw/article/details/51539935

以下主要讲windwos下的安装

1. 安装 

1)准备环境:Win7安装MinGW

1.1)Win7已就绪

1.2)下载 MinGW:www.mingw.org => Downloads => mingw-get-setup.exe

1.3)安装MinGW:

    默认安装目录:C:/MinGW

    Basic setup:    mingw-get install mingw32-base msys-base  gcc   g++, 

    All packages:msys base和mingw developer toolkit.  //这里是安装automake autocofing工具等。

1.4)启动MSYS:C:\MinGW\msys\1.0\msys.bat

    MSYS命令行中的/目录,即是Win7中的C:\MinGW\msys\1.0目录。

2)下载编译安装

2.1)下载CUnit: sourceforge.net/projects/cunit/  =>  Download  => CUnit-2.1-3.tar.bz2

2.2)复制 CUnit-2.1-3.tar.bz2 到 MSYS的/home/cunit

2.3)解压 CUnit-2.1-3.tar.bz2 到当前目录

2.4)MSYS命令行进入到目录/home/cunit/CUnit-2.1-3

2.4.1)运行./bootstrap

/opt/cunit 是我要安装到的目录

bootstrap完成了所有aclocal, autoconf, automake等等操作,直到configure完成。

2.4.2)运行make

2.4.3)运行make install 

2.5)已经安装到/opt/cunit,/opt/cunit/doc/CUnit/index.html就是CUnit的介绍

3)测试使用

3.0)在目录/home/cunit/maxi中

3.1)添加被测文件:maxi.c, maxi.h

maxi.h

extern int maxi(int i1, int i2);
maxi.c

int maxi(int i1, int i2)
{
    return i1>i2? i1: i2;
}
3.2)添加测试文件:test_main.c

#include <CUnit/Basic.h>
#include <CUnit/Console.h>
#include <CUnit/CUnit.h>
#include <CUnit/TestDB.h>
 
#include <stdlib.h> 
#include "maxi.h"
 
/* test cases */
 
void test_maxi_1(void)
{
    CU_ASSERT(maxi(0,2)==2);  //  this case will pass
}
 
void test_maxi_2(void)
{
    CU_ASSERT(maxi(0,-2)==1);    // this case will fail
}
 
void test_maxi_3(void)
{
    CU_ASSERT(maxi(2,2)==2);    // this case will pass
}
 
CU_TestInfo tests[] = {
    {"test 1", test_maxi_1 },
    {"test 2", test_maxi_2 },
    {"test 3", test_maxi_3 },
    CU_TEST_INFO_NULL
};
 
/* suite init */
int suite_init(void)
{
    return 0;
}
 
int suite_clean(void)
{
    return 0;
}
 
void suite_setup(void)
{
}
 
void suite_teardown(void)
{
}
 
CU_SuiteInfo suites[] = {
    {"suite 1", suite_init, suite_clean, suite_setup, suite_teardown, tests},
    CU_SUITE_INFO_NULL
};
 
/* registry */
 
int main(int argc, char* argv[])
{
    CU_ErrorCode err;
 
    /* init */
    printf("init\n");
    err = CU_initialize_registry();
    if( err ){
        printf("CU_initialize_registry: %d\n", err);
        return err;
    }
 
    /* add suites and tests */
    printf("add suites and tests\n");
    err = CU_register_suites(suites);
    if( err )
    {
        printf("CU_register_suites: %d\n", err);
    }
    CU_pTestRegistry reg = CU_get_registry();
    printf("CU_get_registry: %d/%d/%u\n", reg->uiNumberOfSuites, reg->uiNumberOfTests, (long)reg->pSuite);
 
    /* run auto */
    printf("run auto\n");
    /**** Automated Mode *****************/
    CU_set_output_filename("TestMax");
    CU_list_tests_to_file();
    CU_automated_run_tests();
    //************************************/
 
    printf("run basic\n");
    /***** Basice Mode *******************/
    CU_basic_set_mode(CU_BRM_VERBOSE);
    CU_basic_run_tests();
    //************************************/
 
    /*****Console Mode ********************
    CU_console_run_tests();
    //************************************/        
    
    /* end */
    printf("end\n");
    CU_cleanup_registry();
    err = CU_get_error();
    if( err )
    {
        printf("error: %d", err);
    }
    return err;
 
}
 
3.3)添加编译脚本:build.sh

gcc maxi.c test_main.c -o test -I/opt/cunit/include -L/opt/cunit/lib -lcunit -static
3.4)执行编译脚本:build.sh

有警告,没关系。

3.5)运行测试:test.exe


 

猜你喜欢

转载自blog.csdn.net/weixin_29898767/article/details/83211913