【Apex】リリース時にコードカバー率が激減する

Salesforce

Sandboxから本番へのリリースでハマったのでメモです。

SandboxでApexクラスを改修しそれを本番にリリースしようとしたら、コードカバー率が激減しました。リリース時にコードカバー率が減少することは稀にあるのですが、今回は激減です。Sandboxでは90%近いのに本番では10%くらいまで減っています。そして何よりも困ったのがコードカバー率以外のエラーが出ない・・

リリース内容に問題があったりして結果的にテストクラスが実行できない(コードカバー率0%)というのはよくあります。そういう場合はエラー内容が出るので、それを手掛かりに見直しします。

ただ今回の場合はエラー内容が出ないし、コードカバー率も0%ではないので、少なくともテストクラスは実行されています。且つSandboxでテスト実行した時と異なる実行結果となっている。

結論として何が原因だったかというと、Sandboxと本番のプロファイル設定に差異があったというものでした。今回のリリースは既にリリース済みのApexクラスへの上書きだったので、リリースセットにプロファイルは含めていませんでした。

具体的な差異は、レコードタイプのデフォルトです
テストクラスでテストデータを登録する時にレコードタイプの指定がなかったので、プロファイルの設定に依存してレコードが登録されてしまった。→その後の抽出処理で想定した動きとならなかった。

エラー内容が出ないのにコードカバー率が激減するという事象は初めてだったので、原因解明にすごく難儀しました・・・最初はリリースセットやテストクラスに問題があるのかと思いましたが、結果としては全然検討違いな原因でした。

今後の教訓としては、リリース時にコードカバー率が激減する時はSandboxと本番の(プロファイルを含めた)設定差異を疑えということですね。

コメント

タイトルとURLをコピーしました