centos kde,gtest的Linux使用(Google test)

 2023-11-19 阅读 24 评论 0

摘要:GTest是Google開發的跨平臺而且開源的C++單元測試框架,很好很強大。 下載地址:https://code.google.com/p/googletest/ 。 關于GTest在Windows下使用,CoderZh給出了十分詳盡的使用指南:http://www.cnblogs.com/coderzh/archive/2009/04/

GTest是Google開發的跨平臺而且開源的C++單元測試框架,很好很強大。

下載地址:https://code.google.com/p/googletest/ 。

關于GTest在Windows下使用,CoderZh給出了十分詳盡的使用指南:http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html 。

?

我的工作環境:Ubuntu12.04, python 2.7, Makefile,SVN等

  • 一、下載gtest文件

centos kde,我用的是svn下載的。

svn checkout http://googletest.googlecode.com/svn/trunk/ gtest-svn

得到最新版的gtest,成功可以看到文件夾gtest-svn。

  • 二、生成gtest靜態庫

先進入文件夾:?

$cd ?gtest-svn

編譯生成gtest-all.o文件(注意-I后無空格):

Centos 7、$g++ -I./include -I./? -c ./src/gtest-all.cc

再生成.a靜態庫文件:

$?ar -rv libgtest.a gtest-all.o

若成功,會在當前目錄下生成libgtest.a庫。可拷貝它到C++單元測試項目中去,以便使用。

  • 三、編寫簡單功能函數
  1. 新建一個項目(目錄)GTestApp,包含兩個代碼文件: functions.h, functions.cpp。

實現兩個int變量的加減乘除功能。

//functions.h
#ifndef _FUNCTIONS_H
#define _FUNCTIONS_Hint add(int one,int two);
int myMinus(int one,int two);
int multiply(int one,int two);
int divide(int one,int two);
#endif
//functions.cpp
#include "functions.h"
int add(int one,int two){return one+two;
}
int myMinus(int one,int two){return one-two;
}
int multiply(int one,int two){return one*two;
}
int divide(int one,int two){return one/two;
}
  • 四、編寫單元測試代碼

1、編寫單元測試代碼functionsTest.cpp

//functionsTest.cpp
#include "gtest/gtest.h"
#include "functions.h"TEST(AddTest,AddTestCase){ASSERT_EQ(2,add(1,1));
}
TEST(MinusTest,MinusTestCase){ASSERT_EQ(10,myMinus(25,15));
}
TEST(MultiplyTest,MutilplyTestCase){ASSERT_EQ(12,multiply(3,4));
}
TEST(DivideTest,DivideTestCase){ASSERT_EQ(2,divide(7,3));
}

centos怎么用?2、編寫測試代碼TestAll.cpp

//TestAll.cpp
#include "gtest/gtest.h"
#include <iostream>
using namespace std;int main(int argc,char* argv[])
{//testing::GTEST_FLAG(output) = "xml:"; //若要生成xml結果文件testing::InitGoogleTest(&argc,argv); //初始化RUN_ALL_TESTS();                     //跑單元測試return 0;
}
  • 五、編譯與運行測試

1、編譯

1) 復制gtest庫文件

在GTestApp目錄下新建lib目錄,并復制libgtest.a到其中。

$mkdir lib

$cp <the path>/libgtest.a lib

google test 教程,2) 復制gtest頭文件

gtest1.6.0目錄下的include包含了需使用到的頭文件。把include復制到GTestApp中來。

3)編譯和鏈接

$ g++ -o functions.o -c functions.cpp

$ g++ -o functionsTest.o -c funciontsTest.cpp -I./include

$ g++ -o TestAll.o -c TestAll.cpp -I./include

centos netstat?鏈接:

$ g++ -o main *.o -I./include -L./lib -lgtest -lpthread????? #注意不是-libgtest,同時需要用到 libpthread這個庫

最后可以得到一個main的可執行文件

2、運行與測試

$./main

[==========] Running 4 tests from 4 test cases.
[----------] Global test environment set-up.
[----------] 1 test from AddTest
[ RUN ] AddTest.AddTestCase
[ OK ] AddTest.AddTestCase (0 ms)
[----------] 1 test from AddTest (1 ms total)

centos測速、[----------] 1 test from MinusTest
[ RUN ] MinusTest.MinusTestCase
[ OK ] MinusTest.MinusTestCase (0 ms)
[----------] 1 test from MinusTest (0 ms total)

[----------] 1 test from MultiplyTest
[ RUN ] MultiplyTest.MultiplyTestCase
[ OK ] MultiplyTest.MultiplyTestCase (0 ms)
[----------] 1 test from MultiplyTest (1 ms total)

[----------] 1 test from DivideTest
[ RUN ] DivideTest.DivideTestCase
[ OK ] DivideTest.DivideTestCase (0 ms)
[----------] 1 test from DivideTest (3 ms total)

[----------] Global test environment tear-down
[==========] 4 tests from 4 test cases ran. (8 ms total)
[ PASSED ] 4 tests.

?

如果需要得到xml文件的話,可以這么做

centos安裝kde?首先先在main函數打開生成函數

testing::GTEST_FLAG(output) = "xml:"; 

再重新編譯,生成main可執行文件。再執行下面操作。

$ ./main --gtest_output=xml

[==========] Running 4 tests from 4 test cases.
[----------] Global test environment set-up.
[----------] 1 test from AddTest
[ RUN ] AddTest.AddTestCase
[ OK ] AddTest.AddTestCase (0 ms)
[----------] 1 test from AddTest (1 ms total)

[----------] 1 test from MinusTest
[ RUN ] MinusTest.MinusTestCase
[ OK ] MinusTest.MinusTestCase (0 ms)
[----------] 1 test from MinusTest (1 ms total)

[----------] 1 test from MultiplyTest
[ RUN ] MultiplyTest.MultiplyTestCase
[ OK ] MultiplyTest.MultiplyTestCase (0 ms)
[----------] 1 test from MultiplyTest (1 ms total)

[----------] 1 test from DivideTest
[ RUN ] DivideTest.DivideTestCase
[ OK ] DivideTest.DivideTestCase (0 ms)
[----------] 1 test from DivideTest (0 ms total)

[----------] Global test environment tear-down
[==========] 4 tests from 4 test cases ran. (4 ms total)
[ PASSED ] 4 tests.

?

讓我們再看下當前目錄,用ls命令:可以看到有一個main.xml的文件,大功告成。

?

本文參考:

http://graybull.is-programmer.com/posts/37871.html

http://www.cnblogs.com/coderzh/archive/2009/03/31/1426758.html

https://code.google.com/p/googletest/

?

轉載于:https://www.cnblogs.com/hcu5555/p/4468847.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/181906.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息