C++:
การเขียนการทดสอบ

อย่างไร:

การใช้กรอบการทดสอบของ Google Test

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

#include <gtest/gtest.h>

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

TEST(TestSuiteName, TestName) {
    EXPECT_EQ(3, add(1, 2));
}

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

บันทึกโค้ดในไฟล์ และคอมไพล์ด้วยคอมไพเลอร์ g++ โดยเชื่อมโยงกับไลบรารี Google Test หากทุกอย่างตั้งค่าได้ถูกต้อง การรันไฟล์ที่เป็นผลลัพธ์จะทดสอบ และถ้าฟังก์ชัน add ทำงานตามที่คาดหวัง คุณจะเห็นผลลัพธ์ว่า:

[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from TestSuiteName
[ RUN      ] TestSuiteName.TestName
[       OK ] TestSuiteName.TestName (0 ms)
[----------] 1 test from TestSuiteName (0 ms total)

[==========] 1 test from 1 test suite ran. (1 ms total)
[  PASSED  ] 1 test.

การใช้ Catch2

อีกหนึ่งกรอบการทดสอบที่ได้รับความนิยมสำหรับ C++ คือ Catch2 ซึ่งมีไวยากรณ์ที่ง่ายกว่าและโดยปกติไม่ต้องการการเชื่อมโยงกับไลบรารี (เฉพาะไฟล์ส่วนหัวเท่านั้น) นี่คือตัวอย่างของวิธีการเขียนทดสอบง่ายๆ ด้วย Catch2:

#define CATCH_CONFIG_MAIN  // บอก Catch ให้จัดหา main() - ทำเช่นนี้ในไฟล์ cpp เพียงหนึ่งไฟล์
#include <catch.hpp>

int multiply(int a, int b) {
    return a * b;
}

TEST_CASE( "Integers are multiplied", "[multiply]" ) {
    REQUIRE( multiply(2, 3) == 6 );
}

หลังจากคอมไพล์และรันทดสอบนี้ Catch2 จะให้ผลลัพธ์ที่ชัดเจนระบุว่าทดสอบผ่านหรือไม่ผ่าน พร้อมข้อมูลที่จำเป็นสำหรับการแก้ไขปัญหา:

===============================================================================
All tests passed (1 assertion in 1 test case)

ตัวอย่างเหล่านี้แสดงถึงวิธีการรวมกรอบการทดสอบเข้ากับกระบวนการพัฒนา C++ ของคุณ สามารถเพิ่มความเชื่อถือได้และความสามารถในการบำรุงรักษาของโค้ดของคุณได้อย่างมาก