Unity全自動化(仕様)
以前、Unityを半自動化するという記事を書きました。
最近それを、更に改善する方法を考えたので、メモとして記載します(まだ作成していないので、あくまでメモです)。
半自動化の問題点は、変更したソースコードをいちいち自分で指定しないといけない点です。
しかし運用をしていると、Unityを実行したいファイルは
- ソースファイルを変更した場合
- テストケースを変更した場合
に限ることがわかってきました(常にグリーンを保つ開発をしているならば、それ以外のファイルは、テストが通るはずです)。
ということは、最近更新されたソースファイルとテストファイルを抽出し、以前作成したtestList.ymlに登録するスクリプトを作成し、rakeの最初に実施するようにすれば良いのです。
動作手順は以下の通りです。
- ファイルリストを作成する。このリストには、ソースファイルとテストファイルの全ての更新日付が記録されている。
- rake実施時に、上記ファイルリストと、ソースファイルとテストファイルの更新日付をそれぞれ比較し、最近更新されたファイルを抽出する。
- ファイルリストの更新タイミングは、gitなどのバージョン管理ツールでソースコードとテストファイルをコミットする時とする
- このようにすることで、gitでコミットするタイミングを元に、それ以降更新されたファイルは全てテストを実行するようになる
- gitの操作は、post-commitのフックを使えば良い
時間さえ取れれば、サクッと作成できる気がするので、作成したらサンプルコードを掲載しようと思います。
あと別の話題ですが、cmockの検索でこのブログに辿り着いて下さる方がいるようですが、cmockよりもfake function framework(fff)をおススメします。fffの問題点は、c99でないとコンパイルできないので、マイコンのコンパイラがc99に対応していないと、実コンパイラでビルドができない点くらいだと思います。
cmockは、動きが重いし、ソースをフォルダ分けして管理している場合には、cmock自身にいくつか手を加える必要があり、結構面倒です。