UnityとCppUTest part1
今、話題の書籍「テスト駆動開発による組み込みプログラミング」。
書籍の内容は非常に面白く魅力的なのですが、それを実践に移すとなると話は別です。
もっとも困難なのが、テスティングフレームワークの導入だと思われます。
また「どのテスティングフレームワークを使えば良いのか?」というツールの選定もなかなか困難です。
そこで、今回はテスティングフレームワークの簡単な比較をしてみます(基本的には人任せですが)。
上記書籍中で例に上がるテスティングフレームワークは、UnityとCppUTestの2つです。
(著者がCppUTestの作成者のひとりということで、CppUTestを推しています)
書籍中では、ストレスなく動かせるため、非常に優れたテスティングフレームワークだと記述されています。
一方で、wikipediaを確認するとC言語用のテスティングフレームワークが大量に記載されています。
wikipediaの○の数を見ると、c++testやTPTは多機能であり選定するならこれだ!と思いがちです。
しかし多機能になると、複数のチェックを1度のテストで実施する場合には、どうしても1回のテストに時間がかかってしまいます。
そうすると「気楽にテストする」という目的とは外れてしまいます。
また、そもそも
また他方で、Unityの公式サイトであるThrow the switchでもいくつかのテスティングフレームワークの比較をしています。
Throw The Switch! - White Papers - Comparing Unit Test Frameworks
このあたりを参考に、自分の業務に適したいテスティングフレームワークを検討すれば良いと思います。
ちなみに、私がテスティングフレームワークを検討するうえで重要だと考えている観点を以下に挙げます。
- テストの追加が容易であること
- テスト実施が容易であること
- MOCKファイル作成が容易であること
- フォルダ構造の変更が不要であること
- xUnit形式のxmlを出力可能なこと
- 有料・無料にはこだわらない(仕事で使用するため)
現在主として使用しているUnityでは、一応上記すべてを満たしており申し分ないかと考えています。
今後はCppUTestも評価し、UnityとCppUTestのどちらが、私にとって有用かを検討します。
また、上記4.のフォルダ構造の変更が不要であること、はUnityではそのままでは満たせなかったため、CMockの一部を変更する必要がありました。
そのあたりも、まとまれば公開したいと考えています。