ncsで使うテストフレームワークはどれだ (5)
2024/09/23
前回の続き。
nRF Connect SDK がサポートする Testing with Unity and CMock を試す。
ncs-blinky
以前作った ncs-blinky に Unity + CMock のテストを追加する。
tests/led
ひな形
まず、テストのひな形を作る。
テスト用のプロジェクトファイルはだいたい同じようなファイルになるので、ありがちな構成を作ってから修正するのが楽だろう。
中身は空っぽだが、Unityのテストは動くくらいのファイルを作るようにした。
$ ./mktest.sh led
$ cd tests/led
$ west build -b native_sim_64 -t run
第1弾
まずは力業でテストを通す。
DT_ALIAS()
,GPIO_DT_SPEC_GET()
は#undef
して空の構造体を返す。- テスト対象の
led.c
は直接#include
するようにした
動く。
第2弾
少し見直そう。
DT_ALIAS()
はGPIO_DT_SPEC_GET()
の引数にするだけなので気にしなくてよい- 構造体の初期化にいちいち
NULL
や0
を設定しているが{}
だけでよかろう
AnyArgs
は楽なのだが、なるべく評価した方がよいかも。
ただ、本体のコードを見てテストコードにも書くくらいだったらいらないような気もする。
どうなんだろうね。
場合によりけりか。
終わりに
GPIO くらいだったらそこまで面倒ではなかった。
ある程度はロジックがあって Zephyr とか BLE の API を呼び出すようなコードでもテストを作ってみないと分からんな。