単体テストツールCppUTestのCppUMock

 前回、組み込みソフトウエアのテストにCppUTestを使っているという話を書いた。これで重宝しているのが、CppUMockだ。というか、これを使えるので、CppUTestを使うことにした、といってよい。
 CppUTest+CppUMockで組み込みテストhttp://park11.wakwak.com/~nkon/homepc/cpputest/に情報がある。ただ、注意事項は、この例は、テスト本体のモックをC言語で記述する場合の例で、インクルードするファイル名の後ろに_cをつける必要がある。
 私は、テストするソースはC言語だが、テスト本体は、C++でも問題ないと思っているので、C++で記述している。PIC32のSPIドライバーのモックの例を下記に示す。

include “TestHarness.h”
#include “CppUTestExt/MockSupport.h”

#include “system_config.h”
#include “system_definitions.h”

DRV_SPI_BUFFER_EVENT DRV_SPI_BufferStatus ( DRV_SPI_BUFFER_HANDLE bufferHandle ) {
    return (DRV_SPI_BUFFER_EVENT)mock()
            .actualCall(“DRV_SPI_BufferStatus”)
            .withLongIntParameter(“bufferHandle”,(long int)bufferHandle)
            .returnIntValue();
}

 上の2行が、CppUMockを使うためのインクルード。次の2行がPIC32のドライバー特有の部分(たとえばSYS_MODULE_INDEX型の定義など)のインクルードである。
 あとは、MockSupport.hを眺めていると何となく使い方がわかると思う。
 時間があれば、もう少し丁寧な紹介をしてみたい。

コメントを残す

メールアドレスが公開されることはありません。