C++ 関数の単体テスト カバレッジを測定するにはどうすればよいですか?

WBOY
リリース: 2024-04-24 09:36:02
オリジナル
609 人が閲覧しました

C で関数単体テストのカバレッジを測定する方法には、GCC の -fprofile-arcs フラグや -ftest-coverage フラグなどのコンパイラ フラグを使用する方法、Google Test の --gtest_output=xml フラグなどのテスト フレームワークを使用する方法があります。コヴラップなど。

如何测量 C++ 函数单元测试的覆盖率?

#C 関数の単体テストのカバレッジを測定するにはどうすればよいですか?

コード カバレッジは単体テストの品質を示す重要な指標です。実行時にテスト スイートでカバーされた関数コードの量を示します。 C では、カバレッジを測定する方法がいくつかあります。

コンパイラ フラグの使用

多くのコンパイラは、カバレッジを測定するためのフラグを提供しています。たとえば、GCC コンパイラを使用する場合:

g++ -fprofile-arcs -ftest-coverage your_code.cpp
ログイン後にコピー

プログラムを実行すると、現在のディレクトリに gcov.out という名前のファイルが生成されます。このファイルにはカバレッジ情報が含まれています。

テスト フレームワークの使用

Google Test (gtest) などのテスト フレームワークには、組み込みのカバレッジ測定ツールが用意されています。 gtest で、--gtest_output=xml フラグを使用してテストを実行します。

gtest your_test_case --gtest_output=xml
ログイン後にコピー

これにより、カバレッジ データを含む XML ファイルが生成されます。

外部ツールの使用

CovWrap は、gcov 出力を生成できる外部ツールです。 Windows および Linux システムで利用できます。

実践的なケース

単純な C 関数を考えてみましょう:

int sum(int a, int b) {
  return a + b;
}
ログイン後にコピー

この関数をテストする単体テストを作成します:

#include "gtest/gtest.h"

TEST(SumTest, PositiveValues) {
  EXPECT_EQ(sum(1, 2), 3);
}
ログイン後にコピー

実行しますgtest を使用してテストを実行し、カバレッジ レポートを生成します:

gtest SumTest --gtest_output=xml
ログイン後にコピー

生成された XML レポートは、テストが sum 関数の次のコード行をカバーしていることを示します:

  return a + b;
ログイン後にコピー

これは、テストのユースケースが関数のロジックをオーバーライドできることを示しています。

以上がC++ 関数の単体テスト カバレッジを測定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート