0Pricing
C++ Academy · บทเรียน

การตั้งค่า GTest

เพิ่มและเรียกใช้เฟรมเวิร์ก

การตั้งค่า GTest เป็นบทเรียน C++ Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C++ Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดจึงต้องใช้เฟรมเวิร์กการทดสอบ

Google Test (GTest) เป็นเฟรมเวิร์กการทดสอบหน่วยของ C++ ที่ใช้อย่างแพร่หลาย โดยมีการลงทะเบียนการทดสอบ การตรวจสอบยืนยันที่หลากหลาย ฟิกซ์เจอร์ และรายงานที่ชัดเจน เพื่อให้คุณตรวจสอบโค้ดโดยอัตโนมัติได้

การติดตั้ง GTest

วิธีทั่วไปในการรับ GTest ได้แก่:

  • แพ็กเกจระบบ (เช่น libgtest-dev)
  • FetchContent ใน CMake ซึ่งดึงข้อมูลจาก GitHub
  • ซับโมดูลที่รวมมาในโครงการ

FetchContent เป็นวิธีที่พกพาไปใช้กับโครงการใหม่ได้มากที่สุด

CMake ด้วย FetchContent

การตั้งค่า CMake ขั้นต่ำจะดาวน์โหลด GoogleTest และลิงก์ไลบรารีให้

# CMakeLists.txt
include(FetchContent)
FetchContent_Declare(
  googletest
  URL https://github.com/google/googletest/archive/refs/tags/v1.14.0.zip
)
FetchContent_MakeAvailable(googletest)

add_executable(my_tests test_main.cpp)
target_link_libraries(my_tests GTest::gtest_main)

การทดสอบครั้งแรกของคุณ

การทดสอบประกาศด้วยแมโคร TEST ซึ่งรับชื่อชุดการทดสอบและชื่อการทดสอบ ภายในนั้นคุณจะใช้การตรวจสอบยืนยัน

#include <gtest/gtest.h>

int add(int a, int b) { return a + b; }

TEST(MathTest, AddsPositive) {
    EXPECT_EQ(add(2, 3), 5);
}

ไม่ต้องเขียน main()

การลิงก์กับ GTest::gtest_main จะจัดเตรียม main() ที่เรียกใช้การทดสอบที่ลงทะเบียนไว้ทั้งหมด คุณเพียงเขียนกรณีการทดสอบเท่านั้น

การเขียน main ของคุณเอง

หากคุณต้องการจุดเริ่มต้นการทำงานแบบกำหนดเอง ให้เริ่มต้น GTest ด้วยตนเอง

#include <gtest/gtest.h>

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

การสร้างและเรียกใช้

หลังจากกำหนดค่า CMake แล้ว ให้สร้างและเรียกใช้โปรแกรม

  • cmake -S . -B build
  • cmake --build build
  • ./build/my_tests

GTest จะแสดงสรุปผลผ่าน/ไม่ผ่านเป็นสี

การอ่านผลลัพธ์

การทดสอบแต่ละรายการจะแสดง [ RUN ] แล้วตามด้วย [ OK ] หรือ [ FAILED ] บรรทัดสุดท้ายจะแสดงจำนวนการทดสอบที่ผ่าน การทดสอบที่ล้มเหลวจะแสดงไฟล์ บรรทัด และค่าที่คาดหวังเทียบกับค่าจริง

การเรียกใช้บางส่วน

ใช้แฟล็ก --gtest_filter เพื่อเรียกใช้เฉพาะการทดสอบที่ตรงกัน เช่น ./my_tests --gtest_filter=MathTest.* วิธีนี้ช่วยให้การแก้จุดบกพร่องที่มุ่งเน้นเฉพาะส่วนทำได้เร็วขึ้น

การผสานรวมกับ CTest

เรียกใช้ enable_testing() และลงทะเบียนไบนารีด้วย gtest_discover_tests เพื่อให้ ctest เรียกใช้ชุดการทดสอบของคุณใน CI ได้

# CMakeLists.txt
enable_testing()
include(GoogleTest)
gtest_discover_tests(my_tests)

กระบวนการทำงานที่ดี

เขียนการทดสอบที่ล้มเหลว ลงมือเขียนโค้ด และดูจนการทดสอบผ่าน ทำให้การทดสอบทำงานรวดเร็วและเป็นอิสระต่อกัน เพื่อให้คุณเรียกใช้ได้ทุกครั้งที่มีการเปลี่ยนแปลง

ตรวจสอบอย่างรวดเร็ว

ทบทวนว่า main() ถูกจัดเตรียมไว้อย่างไร

สรุปทบทวน

คุณได้ตั้งค่า Google Test

  • รับผ่าน FetchContent แพ็กเกจ หรือซับโมดูล
  • TEST(Suite, Name) ใช้ประกาศการทดสอบ
  • ลิงก์ gtest_main เพื่อให้มี main() โดยอัตโนมัติ
  • สร้าง เรียกใช้ กรอง และผสานรวมกับ CTest

คำถามที่พบบ่อย

บทเรียน “การตั้งค่า GTest” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การตั้งค่า GTest” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C++ Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การตั้งค่า GTest”

เพิ่มและเรียกใช้เฟรมเวิร์ก คุณปฏิบัติ C++ Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C++ Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน C++ Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “การตั้งค่า GTest” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน C++ Academy นี้ได้ไหม

ได้ บทเรียน C++ Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การตั้งค่า GTest
  2. การยืนยันและตัวจับคู่
  3. ฟิกซ์เจอร์และการตั้งค่า
  4. การจำลองด้วย GMock
← กลับไปที่ C++ Academy