久々にページ更新します。

私は、C言語用のテストコードを書くのに、CppUTestを使っているのですが、 他にも使いやすいテスト環境ないかなぁ、と思いまして。

前々からGoogle Testがどんなものか気になってはいたのですが、 どうにも手が出ないでいたので、今回とりあえず触ってみることにしました。

で、せっかくなので、CppUTestみたいに、コマンドポンポンでプロジェクトやクラスのテンプレート作れると楽だよね、と思いましたので、 Google Test 向けに似たようなものを書いてみることにしました。

成果物

CppUTest用は、公式リポジトリのscriptsフォルダにMakefileを使うプロジェクトジェネレータがあるんですが、 CMake用は見つからなかったので、とりあえず自分用にCMake用を作りました。

できること

  • プロジェクトディレクトリの生成
  • CMakeLists.txt等のビルドスクリプトのテンプレート生成
  • C++クラスのテンプレートの生成
  • C言語のクラスもどきテンプレートの生成

コマンド

あらかじめ、パスを通しておく必要があります。

また、スクリプトはBシェル準拠で記述していますが、環境によっては動かないかもしれません。 あらかじめご了承いただきたくお願いします。

NewProject

プロジェクトテンプレートを生成します。

NewProject プロジェクト名

でプロジェクトを生成できます。

生成したプロジェクトをビルドする場合は、buildディレクトリに移動した後で、 cmake .. && make と打ち込んでください。

make実行時に、テストとカバレッジチェックも行われます。 実行ファイル生成は、(デバッグビルドの場合は)テストをパスした場合にのみ生成されるようにしました。 オプションでこの工程をスキップすることもできます。

NewPackage

パッケージディレクトを生成します。

プロジェクトディレクトリの中で、

NewPackage パッケージ名

で、パッケージディレクトリが生成されます。

後のNewClassや、NewCClassを使う場合に、パッケージディレクトリは必要になります。

NewClass

C++クラスのテンプレートを生成します。

プロジェクトディレクトリの中で、

NewClass クラス名 パッケージ名

で、クラスのヘッダ・実装・テストファイルが生成されます。

NewCClass

C言語によるクラスもどきのテンプレートを生成します。

プロジェクトディレクトリの中で、

NewCClass クラス名 パッケージ名

で、クラスもどきのヘッダ・実装・テストファイルが生成されます。

使用の主な流れ

以下のような感じで使います。

  1. NewProjectで、プロジェクトを生成

  2. プロジェクトディレクトリ直下で、git initを実行

  3. プロジェクトディレクトリ内のextディレクトリに移動し、git submoduleを使用して、Google TestないしCppUTestをダウンロードしてくる

  4. NewClassでクラスを生成し、テストと実装を書く

  5. buildディレクトリに移動し、cmake .. && makeでビルド・テストを実行する

余談

Google Test を触った感じ、メモリリーク検出等はCppUTestのほうが簡単そうなので、 私はまだまだCppUTestを使っていくことになりそうです。

ただ、テストの実行は、pthreadで並列化できている分、Google Testのほうが速そう? もう少し触ってみないと、違いはわからなそうです。

CppUTestの脱Makefile化ができたことは、今回の作業の一番の収穫かもしれません。



blog comments powered by Disqus

Published

11 May 2018

Tags