首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ 單元測試框架 CppUnit 在 Visual Studio 中快速上手指南

     編輯:關於C++

環境準備

  1. 下載源碼:SourceForge CppUnit。
  2. 編譯庫:打開 src/CppUnitLibraries.dsw,分別編護 Debug/Release 版 CppUnitd.lib/CppUnit.lib 及 testrunnerd.lib/testrunner.lib,輸出至 lib 目錄。
  3. VS 設置:Tools → Options → Projects → VC++ Directories 添加 Include/Library 路徑。
  4. 系統 Path 添加 lib 目錄,確保運行時找到 DLL。

創建測試項目 (MFC 對話框宿主)

stdafx.h 引入核心頭文件

#include 
#include 
#include 

#ifdef _DEBUG
#pragma comment(lib, "testrunnerd.lib")
#pragma comment(lib, "CppUnitd.lib")
#else
#pragma comment(lib, "testrunner.lib")
#pragma comment(lib, "CppUnit.lib")
#endif
using namespace CppUnit;

修改應用程序入口

BOOL CUnitTestApp::InitInstance() {
    MfcUi::TestRunner runner;
    runner.addTest(TestFactoryRegistry::getRegistry("SampleUnitTest").makeTest());
    runner.run(); // 彈出 MFC 測試運行器界面
    return FALSE; // 不進入主對話框循環
}

編寫測試用例

頭文件

class CSampleTestCase : public TestCase {
public:
    CSampleTestCase() {}
    virtual ~CSampleTestCase() {}

    CPPUNIT_TEST_SUITE(CSampleTestCase);
    CPPUNIT_TEST(TestAdd);
    CPPUNIT_TEST_SUITE_END();

    void TestAdd();
};

源文件


#include "SampleTestCase.h"
#include "TargetCode.h" // 被測代碼頭文件

CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(CSampleTestCase, "SampleUnitTest");

void CSampleTestCase::TestAdd() {
    CPPUNIT_ASSERT_EQUAL(1, 1); // 斷言示例
    // 實際測試邏輯...
}

關鍵宏說明

  • CPPUNIT_TEST_SUITE / _END:聲明測試套件。
  • CPPUNIT_TEST(method):註冊測試方法。
  • CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(cls, registryName):將測試套件註冊到指定名稱的註冊表,供 TestFactoryRegistry::getRegistry 獲取。
  • 常用斷言:CPPUNIT_ASSERT, CPPUNIT_ASSERT_EQUAL, CPPUNIT_ASSERT_DOUBLES_EQUAL, CPPUNIT_FAIL 等。

進階提示

  • 使用 TestFixture 機制 (setUp/tearDown) 管理測試前後置資源。
  • 集成到 CI 流程:命令行運行 TestRunner.exe 並輸出 XML/JUnit 格式報告。
  • 測試私有成員:FRIEND_TEST 宏或將測試類聲明為友元。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved