Salesforce 公式の Visual Studio Code (VS Code) 拡張機能であるSalesforce Extensions for VS Codeは、Salesforce CLI のコマンド群を実行できるコア機能に加えて、Apex テストについても豊富な機能を提供しています。この記事では、公式の VS Code 拡張機能を用いた基本的な Apex テストの実行・確認方法やApex Replay Debugger を用いたデバッグログの分析方法を紹介します。
準備
開発環境の設定方法は、以下の記事をご確認ください。
Visual Studio Code で Salesforce の開発環境を構築する
Apexテストの実行
VS Code で Apex テストを実行するには以下の方法があります。
開いているファイルから実行
@isTest アノテーションが付与された Apex クラスまたはメソッドにはそれぞれRun All Tests
、Run Test
のリンクが表示されます。これらをクリックするとテストが実行できます。
サイドバーから実行
ビーカーのアイコンからApexテスト用のサイドバーを表示します。再生ボタンをクリックしてテストを実行できます。
コマンドパレットから実行
コマンドパレットを起動 (Ctrl+Shift+P/Cmd+Shift+P) し、SFDX: Invoke Apex Tests...
を実行後、実行したいテストクラスを選択することでもテストを実行できます。
テスト結果の確認
実行した Apex テストの結果を確認するには以下の方法があります。
サイドバーで結果を確認する
Pass したテストは緑色、Fail したテストは赤色アイコンで表示されます。また、テストクラスにカーソルを合わせるとサマリが表示されます。 ### コンソールの出力で結果を確認する メッセージは出力タブから確認できます。テスト結果にカバレッジを追加する
settings.json に "salesforcedx-vscode-core.retrieve-test-code-coverage":true
を追加すると、出力タブからカバレッジを確認できます。
直後にフッターの Highlight Apex Code Coverage
ボタンをクリックし対象の Apex クラスを開くとカバレッジを視覚的に確認できます。
匿名実行
- 開いているファイルをそのまま匿名実行する場合は、コマンドパレットから
SFDX: Execute Anonymous Apex with Editor Contents
を実行します。- 補完が効きませんが、テキストファイルであれば拡張子は
.cls
である必要はありません。
- 補完が効きませんが、テキストファイルであれば拡張子は
- 開いているファイルの一部を匿名実行する場合は、対象の文字列を選択している状態で、コマンドパレットを起動し
SFDX: Execute Anonymous Apex with Currently Selected Text
を実行します。
デバッグログの確認
シンプルにログだけ取得するには、コマンドパレットからSFDX : Get Apex Debug Logs...
を実行後(ログの一覧が表示されるまで少し時間がかかることがあります)、取得したいログを選択します。
Apex Replay Debuggerでログを解析する
Apex Replay Debugger は、公式の拡張機能に含まれる、デバッグログの分析機能です。ビデオを録画して再生するように、トランザクションを記録し、ログに基づいてトランザクションをシミュレートします。一般的な対話型デバッガのように、ブレークポイントの設定やその時点での変数の状態を解析することができます。ちなみに名前が似ているApex Debuggerは、スクラッチ組織やISVの顧客のSandboxをリアルタイムでデバッグするための機能です。
1. 事前設定
デバッグのサイドバーを開き、「構成の追加」→「Apex Replay Debugger」を選択します。.vscode
フォルダにlaunch.json
ファイルが作成されます。既にlaunch.json
がある場合はReplay Debugger用の構成が追加されますので保存します。
2. ブレークポイント・チェックポイントの設定
ブレークポイントを設定するには、ApexクラスまたはApexトリガを開き、ブレークポイントを設定したい行番号の左隣をクリックします。
ブレークポイントよりも詳細な情報をデバッグ時に取得するには、チェックポイントを設定します。コードの行の実行時にヒープダンプが取得されるため、トリガーコンテキスト変数の値など、デバッグログに残らない情報を取得することができます。チェックポイントを設定するには、対象の行にカーソルを合わせた状態で、コマンドパレットから、SFDX: Toggle Checkpoint
を実行します。チェックポイントを設定後、これを組織に反映させるため、コマンドパレットからSFDX: Update Checkpoints in Org
を実行します。なお、一度に設定できるチェックポイントの数は最大で 5 つまでです。
3. ログレベルの設定・デバッグログの取得
Apex Replay Debugger を実行するためには、ログレベルの設定が、APEX_CODE
はFINEST
、VISUALFORCE
はFINER
またはFINEST
に設定されている必要があります。コマンドパレットからSFDX: Turn On Apex Debug Log for Replay Debugger
を実行するか、手動でログレベルを変更しておきます。その後、何らかの方法でデバッグログを出力(例えば、画面を開く、レコードをバックグラウンドで更新する、Apex テストや匿名実行する、など)し、前述のSFDX : Get Apex Debug Logs...
コマンドでログを取得します。
4. Apex Replay Debugger を起動する
デバッグログファイルを開き、エディタの任意の箇所で右クリックし(またはコマンドパレットから) SFDX: Launch Apex Replay Debugger with Current File
を選択します。
続行ボタン (F5) をクリックする度に、設定したブレークポイント・チェックポイントにおける変数の値やコールスタックなどを左サイドバーで確認できます。
デバッグについては VS CodeのDocs も合わせて参考にしてください。
考慮事項
-
SFDX: Turn On Apex Debug Log for Replay Debugger
で設定したログレベルやSFDX: Update Checkpoints in Org
で設定したチェックポイントの有効期間は 30 分です。 - スケジュール Apex が生成するログは Replay できません。
- 1 度に 1 つのログしか Replay できないため、非同期 Apex のように複数のログを出力する場合は注意が必要です。