【Salesforce】Visual Studio Code テスト実行とカバレッジの確認
VSCode上でテストクラスを実施して、カバレッジの確認ができたのでメモ。
Apexテストクラスの実行
VSCodeでテストクラスを開くと、コード上に Run Test のリンクが表示される。

Run Testをクリックすればテストメソッドが単体で実行され、Run All Testをクリックすればクラス内のテストメソッドが一括して実行される。
または、サイドメニューのテストアイコンをクリックすればテスト一覧が表示される。カーソルをあてると実行ボタンが表示されるので、クリックでテストを実行できる。ここで組織のすべてのテストを実行することも可能。

実行結果の確認
テストの実行結果は出力タブで確認できる。

Passで成功、Failで失敗など。もっと視覚的に確認したい場合はテスト一覧から確認すると分かりやすい。緑が成功、赤が失敗。直近のテスト結果を色分けしているので、青は今回対象外というふうに見ればよい。

カーソルをあてればテスト失敗した場合の内訳も確認できる。

カバレッジの確認
カバレッジは標準の設定では確認できないみたい。カバレッジも見れるように設定する。
左下のギアアイコン→設定

Salesforce Feature Previews の Retrieve-test-code-coverage をチェック

テストを実行するとカバレッジが取得できる。

今回実行したテストで対象となったApexクラスのカバレッジだけではなく、過去分も含めて取得できるものを全部リスト表示してくれるようだ。
なおステップ単位のコードカバー状況は、テスト対象となるApexクラスまたはトリガを開き、左下のハンバーガーアイコンをクリックすると確認できる。

このアイコンをもう1回クリックすると色分けが消える。
カバレッジの設定を有効にするとエラーになる場合
カバレッジの設定を有効にした後、テスト実行でVSCodeの出力コンソール上に下記エラーが発生。
12:53:50.500 sfdx force:apex:test:run --tests ProductConstitutionTriggerTest --resultformat human --outputdir c:\Users\gawatariテスト\Documents\w_workspace\sample\.sfdx\tools\testresults\apex --loglevel error --codecoverage ERROR: TypeError [ERR_INVALID_CHAR]: Invalid character in header content ["projectdir"] Unhandled rejection CodeCoverageRetrievalFailed: Invalid character in header content ["projectdir"] at ClientRequest.setHeader (_http_outgoing.js:473:3) at new ClientRequest (_http_client.js:194:14) at Object.request (https.js:281:10) at Request.start (C:\Program Files\Salesforce CLI\client\node_modules\request\request.js:751:32) at Request.end (C:\Program Files\Salesforce CLI\client\node_modules\request\request.js:1511:10) at end (C:\Program Files\Salesforce CLI\client\node_modules\request\request.js:564:14) at Immediate.<anonymous> (C:\Program Files\Salesforce CLI\client\node_modules\request\request.js:578:7) at runCallback (timers.js:705:18) at tryOnImmediate (timers.js:676:5) at processImmediate (timers.js:658:5) ERROR running force:apex:test:run: Cannot read property 'message' of undefined 12:53:58.77 sfdx force:apex:test:run --tests ProductConstitutionTriggerTest --resultformat human --outputdir c:\Users\gawatariテスト\Documents\w_workspace\sample\.sfdx\tools\testresults\apex --loglevel error --codecoverage が終了コード 1 で終了しました。 |
エラーの内容は意味不明だったが、Salesforceあるある(Dataloaderあるある)でパスに日本語が入るとうまく機能しない場合がある。
c:\Users\gawatariテスト\Documents\w_workspace\sample\.sfdx\tools\testresults\apex |
ワークスペースをCドライブ直下にお引越ししたらエラーが解消した。