[解決]GitHub Actionsを使ったGoogleTest+カバレッジ on Linux | あさぼんの3Dプリンタ奮闘記

あさぼんの3Dプリンタ奮闘記

40代のサラリーマンです。
3Dプリンタやプログラミングで苦労していることを書いていこうと思います。

GitHub に公開しているリポジトリ

asabon/StateMachine (github.com)

を使って「GitHub Actionsを使ったGoogleTestによるUnitTest実行&カバレッジ測定」を試しています。

 

前回のブログ↓で、もう少しのところまでいきました。

今度はLinux環境でGoogleTest + カバレッジ on GitHub Actions | あさぼんの3Dプリンタ奮闘記 (ameblo.jp)

 

今日はその続きです。

解決していなかった課題は、

  • googlemockが使えない
  • テストコード ( test.cpp ) はカバレッジが測定されているのに、テスト対象コード ( statemachine.c ) はカバレッジが測定されていない
の2点でした。
前者は、まぁ最悪あきらめますが、後者はこれができないと意味がないのでなんとしても解決しないといけないです。
 
で、なんとなくファイルをぼーっと眺めていましたが、とても単純なミスに気づきました。
CMakeLists.txt に、
  • set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage")

はつけていたけど、
  • set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --coverage")

を付け忘れていました・・・。
どうりでテストコード ( C++ ) は計測されるけど、テスト対象コード ( C ) は計測されないわけだ。
 
ってことで、
でできたバッジの対応もおこない、やりたいことは一通りできた感じです。
 
まずはトップページ。こんな感じで main ブランチに対するカバレッジのバッジがつきました。
(40%というのは低いですが・・・)
 
プルリクコメントにもこんな感じで、そのプルリクに対するカバレッジがコメントでつきます。
 
ここまでで、以下の2つのリポジトリを使って、GitHub Actions を使った UnitTest + カバレッジ計測ができました。まとめるとこんな感じでしょうか。
  • asabon/PFD_Editor (github.com)
    • 言語 : C# (.NET framework)
    • ビルド環境 : Visual Studio
    • Windows 環境 ( vstest.console + altcover ) での UnitTest + カバレッジ
    • ReportGenerator を使ったカバレッジレポート&バッジ生成
  • asabon/StateMachine (github.com)
    • 言語 : C
    • ビルド環境 : CMake
    • Linux 環境 ( GoogleTest + gcov ) での UnitTest + カバレッジ
    • ReportGenerator を使ったカバレッジレポート&バッジ生成
興味ある方のお役に立てると幸いです。
あと、CMakeLists.txt の書き方など、いろいろと見よう見まねのところが多く、間違っているところがあるかもしれないので、ご指摘いただけるとうれしいです。