tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:System.assertEqualsのエラーメッセージ指定を試してみました

Apexのテストクラス作成時にはSystem.assertEqualsを使って想定された結果となっているかをチェックできます。下記の場合はエラーメッセージを格納する変数の値が空白値となっているかをチェックできます。

System.assertEquals(String.isEmpty(result.errorMessage), true);


空白値が想定されている部分でエラーが発生した場合、次のようなエラーメッセージが表示されます。
f:id:tyoshikawa1106:20181023010042p:plain


trueを想定しているところにfalseが返って来ているとメッセージが表示されています。テストとしては正しく判定が行われていますが、想定外のエラーの調査には少し分かりづらいメッセージとなります。そんなときは3つ目の引数としてエラーメッセージを指定することが可能です。

System.assertEquals(String.isEmpty(result.errorMessage), true, '任意のエラーメッセージ');


例えば次のように値の必須チェックを行っているApexクラスがあります。
f:id:tyoshikawa1106:20181023010325p:plain


テストクラス作成時にテストデータの用意で本来は値をセットする部分にnullをセットしました。これで必須チェックエラーでテストが失敗する状態です。
f:id:tyoshikawa1106:20181023010621p:plain


System.assertEqualsを次のように変更します。result.errorMessage変数の値が空値でなかった際にテスト結果にresult.errorMessage変数の値を表示する書き方となります。
f:id:tyoshikawa1106:20181023011749p:plain

System.assertEquals(String.isEmpty(result.errorMessage), true, result.errorMessage);


これでテスト実行すると次のようにresult.errorMessage変数の値がテスト結果に表示されます。
f:id:tyoshikawa1106:20181023011958p:plain


エラーメッセージは任意の値をセットできるので状況に応じて指定してあげると予期せぬエラーが発生したときに調査がしやすくなります。