1.获取
wget https://googletest.googlecode.com/files/gtest-1.7.0.zip
2.编译
unzip gtest-1.7.0.zip
cd gtest-1.7.0
./configure –prefix=/opt/gtest
make
3.安装
sudo mkdir /opt/gtest /opt/gtest/include /opt/gtest/lib
sudo cp -a include/gtest/ /opt/gtest/include
sudo cp -a lib/.libs/* /opt/gtest/lib
rm /opt/gtest/lib/libgtest.la
rm /opt/gtest/lib/libgtest_main.la
sudo cp -a lib/libgtest.la /opt/gtest/lib
sudo cp -a lib/libgtest_main.la /opt/gtest/lib
vim /etc/ld.so.conf.d/gtest.conf,写入/opt/gtest/lib,执行ldconfig
4.测试
在任意一个位置新建目录,把以下这几个文件放入
main.cpp
<code class="hljs cpp has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#include<iostream></span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">using</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">namespace</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">std</span>; <span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#include <limits.h></span> <span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#include "gtest/gtest.h"</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> main(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> argc, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">char</span> **argv) { ::testing::InitGoogleTest(&argc, argv); <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> RUN_ALL_TESTS(); } </code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li></ul>
func.cpp
<code class="hljs cpp has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#include<iostream></span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">using</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">namespace</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">std</span>; <span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#include "func.h"</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> func(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> a, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> b) { <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> a+b; } </code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li></ul>
func.h
<code class="hljs go has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-typename" style="color: rgb(102, 0, 102); box-sizing: border-box;">int</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">func</span>(<span class="hljs-typename" style="color: rgb(102, 0, 102); box-sizing: border-box;">int</span> a, <span class="hljs-typename" style="color: rgb(102, 0, 102); box-sizing: border-box;">int</span> b);</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>
funcTest.cpp
<code class="hljs cpp has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#include<iostream></span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">using</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">namespace</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">std</span>; <span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#include <limits.h></span> <span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#include "gtest/gtest.h"</span> <span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">#include "func.h"</span> TEST(AdditionTest,twoValues){ EXPECT_EQ(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>,func(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>)); } </code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li></ul>
makefile
<code class="hljs ruby has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-constant" style="box-sizing: border-box;">CXX</span> = g++ <span class="hljs-constant" style="box-sizing: border-box;">CXXFLAGS</span> = -g -<span class="hljs-constant" style="box-sizing: border-box;">L</span>/opt/gtest/lib -lgtest -lgtest_main -lpthread <span class="hljs-constant" style="box-sizing: border-box;">INCS</span> = -<span class="hljs-constant" style="box-sizing: border-box;">I</span>./ -<span class="hljs-constant" style="box-sizing: border-box;">I</span>../../<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">include</span> -<span class="hljs-constant" style="box-sizing: border-box;">I</span>/opt/gtest/<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">include</span> <span class="hljs-constant" style="box-sizing: border-box;">OBJS</span> = func.o funcTest.o <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">testAll:</span> <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">OBJS</span>) <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">CXX</span>) <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">CXXFLAGS</span>) <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">INCS</span>) -o testAll main.cpp <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">OBJS</span>) <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">INCS</span>) .cpp.<span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">o:</span> <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">CXX</span>) <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">CXXFLAGS</span>) -c <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$<</span> -o <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$@</span> <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$(</span><span class="hljs-constant" style="box-sizing: border-box;">INCS</span>) <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">clean:</span> rm testAll *.o </code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li></ul>
运行:
make
./testAll
<code class="hljs css has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[==========]</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">Running</span> 1 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">test</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">from</span> 1 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">test</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">case</span>. <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[----------]</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">Global</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">test</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">environment</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">set-up</span>. <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[----------]</span> 1 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">test</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">from</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">AdditionTest</span> <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[ RUN ]</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">AdditionTest</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.twoValues</span> <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[ OK ]</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">AdditionTest</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.twoValues</span> (0 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">ms</span>) <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[----------]</span> 1 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">test</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">from</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">AdditionTest</span> (0 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">ms</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">total</span>) <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[----------]</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">Global</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">test</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">environment</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">tear-down</span> <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[==========]</span> 1 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">test</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">from</span> 1 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">test</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">case</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">ran</span>. (0 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">ms</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">total</span>) <span class="hljs-attr_selector" style="color: rgb(0, 136, 0); box-sizing: border-box;">[ PASSED ]</span> 1 <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">test</span>. </code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li></ul>
参考资料:
http://www.yolinux.com/TUTORIALS/Cpp-GoogleTest.html#INSTALLATION