CUnit在Linux下安裝配置
由於專案需要,對於C語言的單元測試工具CUnit在Linux下如何使用進行了調查,在網上對相關內容進行搜尋發現,很多內容都很相近,甚至完全一樣,在這篇爭相轉載的文章中,雖有詳細的說明,但也有描述的不甚清晰之處,對於剛剛接觸Linux的同學,往往是一頭霧水,不能很順利的配置出來。籍著此次的調查機會,現將具體的步驟和配置過程中需要注意的地方進行了補充說明,希望能對以後需要進行同樣工作的同學有些幫助。
1、首先在http://cunit.sourceforge.net/index.html連結處,下載最新版本的CUnit原始碼包(CUnit-2.1-0-src.tar.gz)。
2、將CUnit原始碼包(CUnit-2.1-0-src.tar.gz)複製到Linux的目標目錄下,比如我在這裡放到了/usr/unittest目錄下。
3、CUnit原始碼包的解壓。開啟[System Tools]-〉[Terminal],進入到/usr/unittest目錄下,
輸入如下命令:
#tar xzvf CUnit-2.1-0-src.tar.gz
執行結束後,將會在當前目錄下生成一個解壓後的資料夾(CUnit-2.1-0)。
4、解壓結束後,開始進行編譯和安裝。
#cd CUnit-2.1-0
#aclocal
#autoconf
#automake
#chmod u+x configure
#./configure --prefix <Your choice of directory for installation>
(對上一句進行解釋,<Your choice of directory for installation>這個位置,需要你輸入要安裝的目錄,目錄的格式舉例如下:/usr/unittest/)
#make
#make install
這裡需要一段時間...
#cd /usr/unittest/lib
#ldconfig
最後這兩句,感覺像是沒什麼用,有時間證實一下。
到此處為止,CUnit的安裝基本上就到一段落了。
接下來是來測試我們的程式碼工作流程。
將要測試的程式碼複製到/usr/unittest目錄下,
輸入如下命令:
#export LD_LIBRARY_PATH=/usr/unittest/lib
#gcc -o test -I/usr/unittest/include -L/usr/unittest/lib -lcunit run_test.c test_func.c func.c
這樣,即可在/usr/unittest目錄下生成可執行檔案test。
#./test
執行該檔案,執行成功後,會在當前目錄下產生兩個xml檔案。
①TestMax-Listing.xml :對測試用例的報告
②TestMax-Results.xml :對測試結果的報告
要檢視這兩個檔案,還需要使用如下xsl和dtd檔案:
CUnit-List.dtd和CUnit-List.xsl用於解析列表檔案,
CUnit-Run.dtd和CUnit-Run.xsl用於解析結果檔案。
這四個檔案在CUnit包裡面有提供,安裝之後在unittest/share/CUnit目錄下,
預設安裝的話在/home/usr/local/share/CUnit目錄下。
在檢視結果之前,需要把這六個檔案:
TestMax-Listing.xml, TestMax-Results.xml, CUnit-List.dtd, CUnit-List.xsl, CUnit-Run.dtd, CUnit-Run.xsl拷貝到一個目錄下,然後用瀏覽器開啟兩個結果的xml檔案就可以了。
--------------------------------------------------
示例程式碼如下:
func.c
--------
int maxi(int i, int j)
{
return i>j?i:j;
// return i;
}
--------
test_func.c
--------
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include "include/CUnit/CUnit.h"
#include "include/CUnit/Automated.h"
/**//*---- functions to be tested ------*/
extern int maxi(int i, int j);
/**//*---- test cases ------------------*/
void testIQJ()
{
CU_ASSERT_EQUAL(maxi(1,1),1);
CU_ASSERT_EQUAL(maxi(0,-0),0);
}
void testIGJ()
{
CU_ASSERT_EQUAL(maxi(2,1),2);
CU_ASSERT_EQUAL(maxi(0,-1),0);
CU_ASSERT_EQUAL(maxi(-1,-2),-1);
}
void testILJ()
{
CU_ASSERT_EQUAL(maxi(1,2),2);
CU_ASSERT_EQUAL(maxi(-1,0),0);
CU_ASSERT_EQUAL(maxi(-2,-1),-1);
}
CU_TestInfo testcases[] = {
{"Testing i equals j:", testIQJ},
{"Testing i greater than j:", testIGJ},
{"Testing i less than j:", testILJ},
CU_TEST_INFO_NULL
};
/**//*---- test suites ------------------*/
int suite_success_init(void) { return 0; }
int suite_success_clean(void) { return 0; }
CU_SuiteInfo suites[] = {
{"Testing the function maxi:", suite_success_init, suite_success_clean, testcases},
CU_SUITE_INFO_NULL
};
/**//*---- setting enviroment -----------*/
void AddTests(void)
{
assert(NULL != CU_get_registry());
assert(!CU_is_test_running());
/**//* shortcut regitry */
if(CUE_SUCCESS != CU_register_suites(suites)){
fprintf(stderr, "Register suites failed - %s ", CU_get_error_msg());
exit(EXIT_FAILURE);
}
}
--------
run_test.c
--------
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int main( int argc, char *argv[] )
{
printf("hello");
if(CU_initialize_registry()){
fprintf(stderr, " Initialization of Test Registry failed. ");
exit(EXIT_FAILURE);
}else{
AddTests();
CU_set_output_filename("TestMax");
CU_list_tests_to_file();
CU_automated_run_tests();
CU_cleanup_registry();
}
return 0;
}
-----------------------end--------------------------------
1、首先在http://cunit.sourceforge.net/index.html連結處,下載最新版本的CUnit原始碼包(CUnit-2.1-0-src.tar.gz)。
2、將CUnit原始碼包(CUnit-2.1-0-src.tar.gz)複製到Linux的目標目錄下,比如我在這裡放到了/usr/unittest目錄下。
3、CUnit原始碼包的解壓。開啟[System Tools]-〉[Terminal],進入到/usr/unittest目錄下,
輸入如下命令:
#tar xzvf CUnit-2.1-0-src.tar.gz
執行結束後,將會在當前目錄下生成一個解壓後的資料夾(CUnit-2.1-0)。
4、解壓結束後,開始進行編譯和安裝。
#cd CUnit-2.1-0
#aclocal
#autoconf
#automake
#chmod u+x configure
#./configure --prefix <Your choice of directory for installation>
(對上一句進行解釋,<Your choice of directory for installation>這個位置,需要你輸入要安裝的目錄,目錄的格式舉例如下:/usr/unittest/)
#make
#make install
這裡需要一段時間...
#cd /usr/unittest/lib
#ldconfig
最後這兩句,感覺像是沒什麼用,有時間證實一下。
到此處為止,CUnit的安裝基本上就到一段落了。
接下來是來測試我們的程式碼工作流程。
將要測試的程式碼複製到/usr/unittest目錄下,
輸入如下命令:
#export LD_LIBRARY_PATH=/usr/unittest/lib
#gcc -o test -I/usr/unittest/include -L/usr/unittest/lib -lcunit run_test.c test_func.c func.c
這樣,即可在/usr/unittest目錄下生成可執行檔案test。
#./test
執行該檔案,執行成功後,會在當前目錄下產生兩個xml檔案。
①TestMax-Listing.xml :對測試用例的報告
②TestMax-Results.xml :對測試結果的報告
要檢視這兩個檔案,還需要使用如下xsl和dtd檔案:
CUnit-List.dtd和CUnit-List.xsl用於解析列表檔案,
CUnit-Run.dtd和CUnit-Run.xsl用於解析結果檔案。
這四個檔案在CUnit包裡面有提供,安裝之後在unittest/share/CUnit目錄下,
預設安裝的話在/home/usr/local/share/CUnit目錄下。
在檢視結果之前,需要把這六個檔案:
TestMax-Listing.xml, TestMax-Results.xml, CUnit-List.dtd, CUnit-List.xsl, CUnit-Run.dtd, CUnit-Run.xsl拷貝到一個目錄下,然後用瀏覽器開啟兩個結果的xml檔案就可以了。
--------------------------------------------------
示例程式碼如下:
func.c
--------
int maxi(int i, int j)
{
return i>j?i:j;
// return i;
}
--------
test_func.c
--------
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include "include/CUnit/CUnit.h"
#include "include/CUnit/Automated.h"
/**//*---- functions to be tested ------*/
extern int maxi(int i, int j);
/**//*---- test cases ------------------*/
void testIQJ()
{
CU_ASSERT_EQUAL(maxi(1,1),1);
CU_ASSERT_EQUAL(maxi(0,-0),0);
}
void testIGJ()
{
CU_ASSERT_EQUAL(maxi(2,1),2);
CU_ASSERT_EQUAL(maxi(0,-1),0);
CU_ASSERT_EQUAL(maxi(-1,-2),-1);
}
void testILJ()
{
CU_ASSERT_EQUAL(maxi(1,2),2);
CU_ASSERT_EQUAL(maxi(-1,0),0);
CU_ASSERT_EQUAL(maxi(-2,-1),-1);
}
CU_TestInfo testcases[] = {
{"Testing i equals j:", testIQJ},
{"Testing i greater than j:", testIGJ},
{"Testing i less than j:", testILJ},
CU_TEST_INFO_NULL
};
/**//*---- test suites ------------------*/
int suite_success_init(void) { return 0; }
int suite_success_clean(void) { return 0; }
CU_SuiteInfo suites[] = {
{"Testing the function maxi:", suite_success_init, suite_success_clean, testcases},
CU_SUITE_INFO_NULL
};
/**//*---- setting enviroment -----------*/
void AddTests(void)
{
assert(NULL != CU_get_registry());
assert(!CU_is_test_running());
/**//* shortcut regitry */
if(CUE_SUCCESS != CU_register_suites(suites)){
fprintf(stderr, "Register suites failed - %s ", CU_get_error_msg());
exit(EXIT_FAILURE);
}
}
--------
run_test.c
--------
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int main( int argc, char *argv[] )
{
printf("hello");
if(CU_initialize_registry()){
fprintf(stderr, " Initialization of Test Registry failed. ");
exit(EXIT_FAILURE);
}else{
AddTests();
CU_set_output_filename("TestMax");
CU_list_tests_to_file();
CU_automated_run_tests();
CU_cleanup_registry();
}
return 0;
}
-----------------------end--------------------------------
相關文章
- Winrar 在Linux下的安裝配置Linux
- 在Linux下安裝配置Cntlm代理教程Linux
- nodejs在linux下的安裝配置NodeJSLinux
- JDK1.6在LINUX下的安裝配置JDKLinux
- jdk在linux下安裝、配置環境變數JDKLinux變數
- JDK1.6在LINUX下的安裝配置[轉]JDKLinux
- Linux下ODBC安裝配置Linux
- Linux下ejabberd安裝配置Linux
- Linux下安裝配置RedisLinuxRedis
- linux下安裝配置svnLinux
- Linux下安裝java及配置(yum安裝)LinuxJava
- 在Linux下安裝JDKLinuxJDK
- 在linux下安裝mysqlLinuxMySql
- 在RAC下安裝配置OGG
- Mongodb在Windows下安裝及配置MongoDBWindows
- Linux下rsync安裝與配置Linux
- Linux下Redis的安裝配置LinuxRedis
- Linux下ftp的安裝配置LinuxFTP
- Linux下SNMP的安裝配置Linux
- Nginx在Linux下的安裝NginxLinux
- mysql在linux下的安裝MySqlLinux
- 在linux下安裝oracle bbedLinuxOracle
- solr在windows下的安裝及配置SolrWindows
- 在centos5下安裝配置VNCCentOSVNC
- Linux環境下nginx安裝配置LinuxNginx
- Linux下安裝mantis配置指南【轉】Linux
- linux下安裝node npm並配置LinuxNPM
- linux下安裝oracle需要的配置LinuxOracle
- LINUX下JBOSS的安裝及配置Linux
- LINUX下安裝cassandra 並配置clusterLinux
- linux下安裝、配置samba服務LinuxSamba
- Linux下Tomcat的安裝配置LinuxTomcat
- 在linux環境下安裝JDK並配置環境變數LinuxJDK變數
- Linux下Go的安裝、配置 、升級和解除安裝LinuxGo
- 在linux環境下安裝MysqlLinuxMySql
- PostgreSQL在Linux下安裝與使用SQLLinux
- Oracle BIEE在linux下的安裝OracleLinux
- 在Linux環境下安裝JBOSSLinux