{"id":1589,"date":"2020-05-21T17:21:45","date_gmt":"2020-05-21T09:21:45","guid":{"rendered":"http:\/\/bloo.heing.fun\/?p=1589"},"modified":"2020-05-21T17:44:47","modified_gmt":"2020-05-21T09:44:47","slug":"clion-cmake%e5%b7%a5%e7%a8%8b%e4%bd%bf%e7%94%a8-gtest","status":"publish","type":"post","link":"https:\/\/bloo.heing.fun\/?p=1589","title":{"rendered":"clion cmake\u5de5\u7a0b\u4f7f\u7528 gtest"},"content":{"rendered":"\n<ol class=\"wp-block-list\"><li><a href=\"https:\/\/github.com\/google\/googletest\">github\u4e0a\u4e0b\u8f7dGoogle Test<\/a>\u3002\u5e76\u653e\u5230\u5de5\u7a0b\u6587\u4ef6\u5939\u4e0b\u3002<\/li><\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>\u5de5\u7a0b\u76ee\u5f55\u7ed3\u6784\u5982\u4e0b\uff1a\n\u263a  tree -L 1                                                                                               master \u2717\n.\n\u251c\u2500\u2500 CMakeLists.txt\n\u251c\u2500\u2500 CMakeLists.txt.user\n\u251c\u2500\u2500 cmake-build-debug\n\u251c\u2500\u2500 googletest\n\u251c\u2500\u2500 main.cpp\n\u2514\u2500\u2500 src\n\ngoogletest\u662f\u4e4b\u524d\u4ecegithub\u4e0a\u4e0b\u8f7d\u4e0b\u6765Google Test\u7684\u4ed3\u5e93\uff0c\u5e76\u91cd\u547d\u540d\u540e\u7684\u3002\nsrc\u4e2d\u7684test\u76ee\u5f55\u662f\u6d4b\u8bd5\u76ee\u5f55\u3002\nsrc\u4e0b\u653e\u3010\u6d4b\u8bd5\u76ee\u5f55\u3011\u548c \u81ea\u5df1\u7684\u5de5\u7a0b\u6e90\u7801\u4eec\uff1a\n\u263a  tree src                                                                                                master \u2717\nsrc\n\u251c\u2500\u2500 include\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 Config.h\n\u251c\u2500\u2500 test\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 utility\n\u2502\u00a0\u00a0     \u2514\u2500\u2500 CellGameCoreTest.cpp\n\u251c\u2500\u2500 ui\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 widget\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 game\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u251c\u2500\u2500 GameWidget.cpp\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u2514\u2500\u2500 GameWidget.h\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 window\n\u2502\u00a0\u00a0     \u2514\u2500\u2500 mainwindow\n\u2502\u00a0\u00a0         \u251c\u2500\u2500 MainWindow.cpp\n\u2502\u00a0\u00a0         \u251c\u2500\u2500 MainWindow.h\n\u2502\u00a0\u00a0         \u2514\u2500\u2500 mainwindow.ui\n\u2514\u2500\u2500 utility\n    \u251c\u2500\u2500 CellGameCore.cpp\n    \u251c\u2500\u2500 CellGameCore.h\n    \u2514\u2500\u2500 Rand_int.h<\/code><\/pre>\n\n\n\n<p>2. \u9879\u76ee\u7684CmakeList.txt\u4e2d\u9700\u8981\u5f15\u5165GoogleTest\u3002\u5982\u4e0b\uff0c\u5f15\u5165\u4e86gtest\u548cgmock<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>add_subdirectory(googletest)\ninclude_directories(googletest\/googletest\/include)\ninclude_directories(googletest\/googlemock\/include)\ntarget_link_libraries(CellGame gtest gtest_main)\ntarget_link_libraries(CellGame gmock gmock_main)<\/code><\/pre>\n\n\n\n<p>3. \u63a5\u7740\u5f00\u59cb\u5199\u6d4b\u8bd5\u6587\u4ef6\u3002\u53ef\u4ee5\u770b\u5230test\u4e2d\u91c7\u53d6\u4e86\u4e0e\u5de5\u7a0b\u7c7b\u4f3c\u7684\u76ee\u5f55\u67b6\u6784\uff0c\u8fd9\u79cd\u67b6\u6784\u98ce\u683c\u8fd8\u4e0d\u9519\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u263a  tree src\/test -L 3                                                                                      master \u2717\nsrc\/test\n\u2514\u2500\u2500 utility\n    \u2514\u2500\u2500 CellGameCoreTest.cpp\n<\/code><\/pre>\n\n\n\n<p>TEST\u5b8f\u662fgtest\u4e2d\u7684\uff0c\u7b2c\u4e00\u4e2a\u53c2\u6570\u662fTest Suit Name, \u7b2c\u4e8c\u4e2a\u53c2\u6570\u662f Test Name\u3002\u8fd9\u4e24\u4e2aName\u4e4b\u524d\u6709\u5c42\u7ea7\u5173\u7cfb\u3002<a href=\"https:\/\/github.com\/google\/googletest\/blob\/master\/googletest\/docs\/primer.md\">\u5728TEST\u4e2d\u53ef\u4ee5\u4f7f\u7528ASSERT_EQ\u7b49\u5b8f\u3002<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/\n\/\/ Created by perci on 2020\/5\/21.\n\/\/\n\n#include &lt;src\/utility\/CellGameCore.h>\n#include &lt;vector>\n#include \"gtest\/gtest.h\"\nTEST(CellGameCoreTest, SampleTest) {\n    CellGameCore core;\n    std::vector&lt;std::vector&lt;int>> vs;\n    vs.push_back(std::vector&lt;int> {1,1,1});\n    vs.push_back(std::vector&lt;int> {0,0,0});\n    vs.push_back(std::vector&lt;int> {0,0,0});\n    std::vector&lt;std::vector&lt;int>> vs2 = core.process(vs);\n\n    ASSERT_EQ(vs2&#91;0]&#91;0], 0);\n    ASSERT_EQ(vs2&#91;0]&#91;1], 1);\n    ASSERT_EQ(vs2&#91;0]&#91;2], 0);\n    ASSERT_EQ(vs2&#91;1]&#91;1], 1);\n\n    return;\n}\n\nTEST(CellGameCoreTest, SampleTest2) {\n    CellGameCore core;\n    std::vector&lt;std::vector&lt;int>> vs;\n    vs.push_back(std::vector&lt;int> {1,0,0});\n    vs.push_back(std::vector&lt;int> {0,1,0});\n    vs.push_back(std::vector&lt;int> {0,0,1});\n    std::vector&lt;std::vector&lt;int>> vs2 = core.process(vs);\n\n    ASSERT_EQ(vs2&#91;0]&#91;0], 0);\n    ASSERT_EQ(vs2&#91;0]&#91;1], 0);\n    ASSERT_EQ(vs2&#91;0]&#91;2], 0);\n    ASSERT_EQ(vs2&#91;1]&#91;1], 1);\n}\n<\/code><\/pre>\n\n\n\n<p>4. \u9700\u8981\u5728CmakeList.txt\u4e2d\u5c06\u6d4b\u8bd5\u6587\u4ef6\u6dfb\u52a0\u5230\u5de5\u7a0b\u4e2d\u3002\u8fd9\u91ccadd_executable\u4e2d\u65b0\u589e\u4e86\u4e00\u4e2amytest\u7684\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>add_executable(mytest src\/test\/utility\/CellGameCoreTest.cpp src\/utility\/CellGameCore.cpp)\ntarget_link_libraries(mytest gtest gtest_main)<\/code><\/pre>\n\n\n\n<p>\u540c\u65f6\u56e0\u4e3aCellGameCoreTest.cpp\u4e2d\u4f7f\u7528CellGameCore\u8fd9\u4e2a\u7c7b\uff0c\u5c31\u5f15\u5165\u4e86CellGameCore.cpp\u3002(CellGameCore.cpp\u4e2d\u5f15\u5165\u4e86CellGameCore.h, \u8fd9\u6837\u5c31\u76f8\u5f53\u4e8e\u628a\u8fd9\u4e24\u4e2a\u6587\u4ef6\u90fd\u5f15\u5165\u4e86\u3002\u5149\u5f15\u5165.h\u662f\u4e0d\u884c\u7684\u3002)<\/p>\n\n\n\n<p>5. \u63a5\u7740reload CmakeList.txt\u540e\uff0c\u5c31\u4f1a\u53d1\u73b0\u9879\u76ee\u7684Configuration<\/p>\n\n\n\n<p>\u4e2d\u6709\u4e86mytest\uff0c\u63a5\u7740\u5c31\u53ef\u4ee5\u8dd1\u8d77\u6d4b\u8bd5\u4e86 <\/p>\n","protected":false},"excerpt":{"rendered":"<p>github\u4e0a\u4e0b\u8f7dGoogle Test\u3002\u5e76\u653e\u5230\u5de5\u7a0b\u6587\u4ef6\u5939\u4e0b\u3002 2. \u9879\u76ee\u7684CmakeList.txt\u4e2d\u9700\u8981\u5f15 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[76,36],"tags":[],"class_list":["post-1589","post","type-post","status-publish","format-standard","hentry","category-cplusplus","category-36"],"_links":{"self":[{"href":"https:\/\/bloo.heing.fun\/index.php?rest_route=\/wp\/v2\/posts\/1589","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bloo.heing.fun\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bloo.heing.fun\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bloo.heing.fun\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bloo.heing.fun\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1589"}],"version-history":[{"count":8,"href":"https:\/\/bloo.heing.fun\/index.php?rest_route=\/wp\/v2\/posts\/1589\/revisions"}],"predecessor-version":[{"id":1597,"href":"https:\/\/bloo.heing.fun\/index.php?rest_route=\/wp\/v2\/posts\/1589\/revisions\/1597"}],"wp:attachment":[{"href":"https:\/\/bloo.heing.fun\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1589"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bloo.heing.fun\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1589"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bloo.heing.fun\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1589"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}