google testのオプションを使ってみた

どもです。
「単体テストの効率化」関係の記事の執筆に絡んで、最近google testを良く触っています。
今回のエントリでは、その中で知った(知っとけよ!)google testの便利なオプションについて書きます。

1.gtest_list_testsオプション

1つ目は、「gtest_list_tests」オプションです。
このオプションは、google testの実行ファイルに含まれている(有効な)テスト一覧を表示します。
使い方は、以下の通りです。

run_test.exe --gtest_list_tests

テスト一覧は、以下のような形式で表示されます。

TestCase1.
  TestName1
  TestName2
  TestName3
TestCase2.
  TestName1
  TestName2
  TestName3

このように、テストケース(テストスイート)の名前が表示され、そのケースに属するテストの名前が次の行から列挙されます。
表示された行の内容が、テストケース/テスト名のどちらなのかの判別は、以下のように行います。

  • 行の末尾が「.」の場合には、テストケース
  • 行の先頭にスペース(半角スペース2個)がある場合には、テスト名

…この両方を同時に満たすことは、google testの書き方のルール上、ないとは思います。
もし見つけたら、教えてください。

2.gtest_filterオプション

1つ目は、「gtest_filter」オプションです。
このオプションは、google testの実行ファイルに登録されたテストを、選択・指定して実行するためのオプションです。
使い方は、以下の通りです。

run_test.exe --gtest_fileter=TestCase1.TestName1

上述のパターンでは、「TestCase1」に属する「TestName1」のみを実行します。
なお、テストの指定方法には、もう少し便利な方法があります。

2.1.パターン指定

正規表現のように、「*」と「?」を指定することができます。
それぞれの文字は、

* 任意の文字列
? 任意の1文字

に対応しています。
例えば、先述の「–gtest_list_tests」の結果で表示されるテストのうち、「TestCase1」のテストのみ実行したい場合は、以下のように指定します。

run_test.exe --gtest_fileter=TestCase1.*

これにより、

  • TestCase1.TestName1
  • TestCase1.TestName2
  • TestCase1.TestName3

の3つが実行されます。

  • TestCase2.TestName1
  • TestCase2.TestName2
  • TestCase2.TestName3

は、実行されません。

2.2.複数指定

「:」を使用することで、複数のパターンを指定できます。
例えば、先述の「–gtest_list_tests」の結果で表示されるテストのうち、「TestName1」と「TestName2」のテストだけを実行したい場合は、以下のように指定します。

run_test.exe --gtest_fileter=*.TestName1:*.TestName2

これにより、

  • TestCase1.TestName1
  • TestCase1.TestName2
  • TestCase2.TestName1
  • TestCase2.TestName2

の4つが実行されます。

  • TestCase1.TestName3
  • TestCase2.TestName3

の2つについては、実行されません。

3.まとめ

今回は、google testを使ってみて自分が便利でよく使うオプション2つについて、簡単ながら使い方を書きました。
google testは非常に優れたテストフレームワークです。
これ以外にも、有効なオプションがありますので、折を見てそれらを使ってみたいと思います。

ではっ!

ex.おまけ

google testの使い方について、日本語のガイド/マニュアルがあります。
今回のエントリで紹介していないオプションについては、そちらを参照してただければと思います。
入門ガイド
上級ガイド