検索
連載

タダでソフト開発の生産性と品質を上げる方法(7):高機能な単体テストツール「GoogleTest」を使いこなす(その2)山浦恒央の“くみこみ”な話(97)(2/3 ページ)

「タダでソフト開発の生産性と品質を上げる方法」の第7回。グーグル(Google)製の単体テストフレームワーク「GoogleTest」の高度な機能のうち、今回は「パスカバレッジ」を取り上げます。

Share
Tweet
LINE
Hatena

2.1 設定

 カバレッジを実行するには、eclipseの設定が必要です。まずは、本コラムの第95回の「3.3 eclipseのダウンロード」の「図6 Eclipse起動画面」をご覧ください。画面左側にある「プロジェクトエクスプローラ」を右クリックし、「プロパティー(R)」を選択します。選択すると、図1が現れます。

図1
図1 プロパティ画面

 図1は、プロパティ画面です。「Cygwin C++ Compiler」の「デバッグ」を選択し、「Generate gcov information」にチェックし、「OK」を選択します。これで、設定は完了です。

2.2 カバレッジの実行

 今回は、以下のリスト1に挙げた例題プログラムを取り上げ、ソースコードのカバレッジを実行して、網羅率を測定してみましょう。このプログラムは、前回の第96回のリスト2で示したプログラムを簡略化したものです(Carという車のクラスがあり、Addメソッドを呼び出し、ガソリン量、TotalGasを加える簡単な処理をしています)。そちらも合わせて参照してください。

#include <gtest/gtest.h>
class Car{
public:
	int TotalGas;
	void Init(){ TotalGas = 0; };
	void Add(int amount){
		if (amount >= 0 && amount <= 40)
			TotalGas += amount;
	};
};
int main(int argc, char **argv) {
    ::testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}
TEST(CarTest,NotTriangle){
	Car car;
	car.Init();
	EXPECT_EQ(0,car.TotalGas);
	car.Add(-1);
}
リスト1 例題プログラム

 このプログラムをビルドし、実行すると、「プロジェクトエクスプローラ」に「.gcno」ファイルができます。図2(左)を確認ください。

図2
図2 gcnoファイル(左)とGcov-Open Coverage results...の画面(右)

 図2(左)の「Add.gcno」ファイルをダブルクリックすると、図2(右)の「Gcov-Open coverage results...」画面が現れます。「Show coverage for the whole selected binary file」をチェックして、「OK」を押すと、図3のように、ソースコードに色が付きます。

図3
図3 カラーリング例

 図3は、プログラムの実行箇所をカラーリングしたものです。なお、本コラムの設定では、網羅基準はC0です。緑が実行したパスで、赤が未実行パスを示します。図3を見ると、Addメソッドが赤になっており、未実行であることが視覚的に分かります。

 また、カバレッジ率の計測結果は、ログ画面から確認できます(図4)。

図4
図4 カバレッジ率の計測結果(クリックで拡大)

 図4は、実行したパスの網羅率の計測結果を示しています。テストの対象箇所は「Add.cc」ですので、それ以外は無視してください。「Add.cc」の合計行数が21行で、「Instrumente...」(計測可能な行数)は12行、Executed Lines(実行済みの行数)は13行となっています。12/13なので、Coverage%(合計)は、「92.31%」です。なお、テスト項目を追加すると「Add.cc」が100%となりますので、確認してください。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る