ということで、これだけ試して、やっとembUnitで落ち着いた。
今の職場では、「オブジェクト指向なんて一時の流行、最近下火になってきたし」(本当は世間では当たり前になりすぎただけ)とか言っちゃう「抽象化によって関心事をモジュールに分割する」スキルの無い人がプログラマのトップに居る。だから、ソースファイルは#includeが数十個並ぶのが当たり前、循環参照も当たり前、ドライバがアプリの関数を名前で呼ぶのも当たり前、っていう状態。
この状態でどうやってユニットテストするか。完全に新規開発のモジュールはPC上でテストファーストで作って完成してから移植でOKだけど、それは一部の例外。殆どは既存のコードの修正なので、ユニットテストしたくてもそれを切り出してPC上で単体コンパイル通るようにするのに数日かかっちゃう。今まで本当にユニットテストが必要なところはがんばってやってきたけど、飽きた。
ムリに切り出そうとするから手間がかかるんであって、がっしり組み込んだままテストしちゃえば良いじゃないか。ということで、組み込めるユニットテストフレームワークを探すと、embUnitが最初からソレを念頭に入れて開発されてた。あっさり組み込んで、ちゃんと動いた。今はテスト結果をメモリ上においてるから吸い出さないといけないけど、SDカードに出力するのもUSB経由でPCに送るのもすぐできる。