よくある質問(FAQ)

機能安全カバレッジモードで、テスト対象となるクラスのメンバー関数が、テスト中に呼ばれているにも関わらずカバレッジが0%になります。0%となる原因を教えてください。

【QTE13】結果確認に関する問題

質問

機能安全カバレッジモードで、テスト対象となるクラスのメンバー関数が、テスト中に呼ばれているにも関わらずカバレッジが0%になります。
0%となる原因を教えてください。

回答

原因としては、以下の2点が考えられます。
①テスト対象ソースファイルの解析時、対象のクラス定義が書かれたヘッダファイルがテスト対象ヘッダファイルとして設定されておらず、メンバ関数へのカバレッジ計測用コードの埋め込みができなかった
②カバレッジ計測用コードが埋め込まれたソースのオブジェクトファイルが、テストドライバソースのオブジェクトファイルより後にリンクされている

そのため、以下の2点をご確認ください。
①project.jsonの"cov-target-header-path-list"オプションに、対象のクラスを定義しているヘッダファイルのパスを設定しているか確認してください。
②実行ファイルにリンクするオブジェクトファイルの順番を確認してください。
テスト対象ソースをコンパイルしたオブジェクトファイルが、テストドライバソースのオブジェクトファイルより後にリンクされている場合、テスト対象ソースをコンパイルしたオブジェクトファイルが先にリンクされるように設定してください。
設定後、prepareコマンドから再実行してください。