前回、組み込みソフトウエアのテストに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を眺めていると何となく使い方がわかると思う。
時間があれば、もう少し丁寧な紹介をしてみたい。