Windows 和 linux 下CUnit編譯安裝教程
本文大部分均參看以下連結,安裝當中有些地方不詳細,我添加了
首先要安裝mingw和msys,下載地址:點選開啟連結
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