1,下载MinGW,解压版,不需要安装;**
1.1 下载:https://sourceforge.net/projects/mingw-w64/files/
1.2 需要配置环境变量:
1.3 验证,可以明显看到GCC可以生效了: gcc -v
2,下载MSys2,解压版,不需要安装;我的解压目录:E:\Software\msys
下载:https://sourceforge.net/projects/mingwbuilds/files/external-binary-packages/
3,下载CUnit,解压版,不需要安装;我的解压目录:E:\Software\msys\home\CUnit-2.1-3
下载:https://sourceforge.net/projects/cunit/
4,利用Msys2编译Cunit
4.1 点击Msys2解压之后的目录的msys.bat(刚开始没有/home目录,点击后会出现,把解压后的cunit目录放到msys2/home目录下)
然后进行目录:
cd /home/CUnit-2.1-3
4.2 进入CUnit的解压之后的目录,执行一下命令行:
libtoolize
automake --add-missing
autoreconf
./configure --prefix=/mingw
make
make install
4.3 然后在msys目录下找到mingw目录,生成4个文件夹:doc、include、lib、share。
doc目录是一些简介以及使用说明。
include和lib目录中是我们需要的头文件以及库文件。
share目录中有Automated模式下需要的文件。
4.4 我们其实只需要2个目录:lib目录下的文件libcunit.a复制到mingw64\lib目录下。
至于include文件,建议放到个人的项目工程目录下。
5,利用MinGW提供的GCC编译器进行编译并生成可执行程序;
5.1 test_sum.h
5.2 test_main.c
#include “test_sum.h”
#include “CUnit/CUnit.h”
#include “CUnit/Basic.h”
#include “CUnit/Automated.h”
#include “CUnit/Console.h”
/* test cases */
void test_first(void)
{
CU_ASSERT(sum1(4,6)==10);
}
void test_second(void)
{
CU_ASSERT(sum1(4,5)==9);
}
CU_TestInfo tests[] = {
{“first”, test_first },
{“second”, test_second },
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 andtests\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/%lu\n", reg->uiNumberOfSuites, reg->uiNumberOfTests,(long)reg->pSuite);
/* run auto */
printf("run auto\n");
/**** Automated Mode *****************/
CU_set_output_filename("TestProcess");
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;
}