簡體   English   中英

如何運行 RUN_ALL_TESTS()

[英]How to run RUN_ALL_TESTS()

我試圖弄清楚谷歌測試框架+ CLion。

我將存檔解壓縮到~/Documents/Libraries/googletest-main/中。 安裝它,以便包含和庫在/usr/local/include//usr/local/lib/中,相應地。

然后,在 CLion 中創建了一個包含兩個文件的項目:

CMakeLists.txt

cmake_minimum_required(VERSION 3.23)
project(TestProject)

set(CMAKE_CXX_STANDARD 14)

add_executable(TestProject test.cpp)

target_link_libraries(TestProject gtest gtest_main)

測試.cpp

#include "gtest/gtest.h"

TEST(BasicTests, testName) {
    EXPECT_EQ(1, 2);
}

TEST(BasicTests, testName2) {
    ASSERT_EQ(2, 2);
}

TEST(BasicTests, testName3) {
    ASSERT_EQ(3, 3);
}

TEST(BasicTests, testName4) {
    ASSERT_EQ(4, 4);
}

現在,作為 CLion 界面的一部分,我可以獨立運行測試。 從框架文檔和教程中,我知道我不能實現main() ,而是使用 gtest_main.cc 中實現的gtest_main.cc (對我來說,路徑是~/Documents/Libraries/googletest-main/googletest/scr/gtest_main.cc )。

一次運行所有測試需要做什么? (通常,在教程中,框架文件位於項目文件夾中,因此可以運行 function RUN_ALL_TEST()。)

gtest_main將您的代碼鏈接到 google 測試,其中main的 function 已經為您編寫,請參見此處

構建目標后,應該創建一個可執行文件,您可以運行該可執行文件來查看測試結果。

如果你想自己寫主要的 function,你應該鏈接到getst 你的主要 function 那么可以如下:

#include "gtest/gtest.h"

TEST(BasicTests, testName) {
    EXPECT_EQ(1, 2);
}

TEST(BasicTests, testName2) {
    ASSERT_EQ(2, 2);
}

TEST(BasicTests, testName3) {
    ASSERT_EQ(3, 3);
}

TEST(BasicTests, testName4) {
    ASSERT_EQ(4, 4);
}

int main(int argc, char **argv) {
  ::testing::InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();
}

請參閱此實時示例: https://godbolt.org/z/6nvzf3TWa

更新

您正在將您的項目鏈接到gtestgtest_main

target_link_libraries(TestProject gtest gtest_main)

我的意思是你應該選擇一個。 如果你選擇gtest_main ,你的項目將鏈接到這個已經有一個主 function 的文件 否則,你應該自己寫主function。

通常,您應該創建兩個項目。 一個用於測試,您擁有 ( TestProject ),另一個用於生產,這是您的主要項目。 這應該是一個新項目,並且有自己的main function 並且沒有鏈接到 gtest_main 的 gtest。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM