2021/06/28

SalesforceのSystemクラスassertを活用してテストを行う方法を紹介

 
  

Salesforce Apexのテストフレームワーク、Systemクラスのassertメソッド

System assertは、SalesforceにおけるApexの単体テスト用のテストフレームワークで使用されるクラスメソッドのひとつです。 SalesforceのApexにおけるデバッグは、SandboxでApexコードをリリースして実行するのが一般的な方法です。その後のテストのために、SalesforceではApexの単体テスト用のテストフレームワークが用意されています。 このフレームワークにより、次のような作業を行うためのクラスが用意されており、テストコードを開発時に並行して作成するテスト駆動型の開発プロセスを実現できます。 ・単体テストを記述する。 ・テストを実行する。 ・テスト結果を確認する。 ・コードカバー率の結果を取得する。

System assertが使用されるSalesforce Apexの単体テスト

Apexのテストで、Systemクラスのassertを使用します。Salesforceでは、Apexの単体テストにおいて、次のようなテストケースを作成することを推奨しています。 ①単一操作 単一のレコードにおいて想定した動作を行っており、予測どおりの結果が生成されていることを確認します。 ②一括操作 1件~200件のレコードを呼び出す一括処理の動作と結果を確認します。 ③ポジティブ動作 すべて正しい処理が行われるポジティブケースで、想定した動作すべてが想定される順列で行われることを確認します。 ④ネガティブ動作 正しい処理が行われないネガティブケースで、エラーメッセージが適切に生成、表示されることを確認します。 ⑤制限ユーザ アクセス権限が制限されているユーザが想定された動作を実行できるか、コードの実行およびエラーメッセージの受信の可否を確認します。

System assertはアサーションを検証するメソッド

Systemクラスのassert、assertEquals、assertNotEqualsは、プログラムが実行する動作の検証に使用できます。 System名前空間にはさまざまなクラスがあり、コアApex機能に使用されるクラスとメソッドが提供されています。 そのうちのひとつであるSystemクラスには、デバッグメッセージの記述、ジョブのスケジュールといったシステム操作のメソッドが含まれており、Systemのメソッドはすべて静的なメソッドです。

Systemクラスのassert

Systemクラスのassertメソッドは、指定された条件に対してtrueであることを確認します。結果がtrueとならない場合は、エラーを返してコードの実行を停止します。 <署名> public static Void assert(Boolean condition, Object msg) <パラメータ> condition 型:Boolean Msg:エラーメッセージのカスタムメッセージであり、省略可能。 型:Object 戻り値 型:Void

SystemクラスのassertEquals

SystemクラスのassertEqualsは、最初の2つの引数が一致することを確認します。結果が一致しない場合は、エラーを返してコードの実行を停止します。 <署名> public static Void assertEquals(Object expected, Object actual, Object msg) <パラメータ> expected:期待値 型:Object actual:実際の値 型:Object msg:エラーメッセージのカスタムメッセージであり、省略可能。 型:Object 戻り値 型:Void

SystemクラスのassertNotEquals

SystemクラスのassertNotEqualsは、最初の2つの引数が一致しないことを確認します。結果が一致する場合はエラーを返し、コードの実行を停止します。 <署名> public static Void assertNotEquals(Object expected, Object actual, Object msg) <パラメータ> expected:期待値 型:Object actual:実際の値 型:Object msg:エラーメッセージのカスタムメッセージであり、省略可能。 型:Object 戻り値 型:Void

System assertの使用例:Salesforce Apexのテストのサンプル

Salesforce Apexにおける、SystemクラスのassertEquals、assertNotEqualsを使用したサンプルを紹介します。このサンプルでは、4つのテストメソッドを持ち、対応するテストクラスが含まれています。

System assertのメソッドを使用した単体テストのサンプル

下記がSystem assertのメソッドを使用した単体テストのサンプルです。
@isTest
class SampleTest {
    @isTest static void testVolumeIncrease() {
        Sample rc = new Sample(10);
        Integer newVolume = rc.increaseVolume(15);
        System.assertEquals(25, newVolume);
    }

    @isTest static void testVolumeDecrease() {
        Sample rc = new Sample(20);
        Integer newVolume = rc.decreaseVolume(15);
        System.assertEquals(5, newVolume);
    }

    @isTest static void testVolumeIncreaseOverMax() {
        Sample rc = new Sample(10);
        Integer newVolume = rc.increaseVolume(100);
        System.assertEquals(50, newVolume);
    }

    @isTest static void testVolumeDecreaseUnderMin() {
        Sample rc = new Sample(10);
        Integer newVolume = rc.decreaseVolume(100);
        System.assertEquals(0, newVolume);
    }

    @isTest static void testGetMenuOptions() {
        // Static method call. No need to create a class instance.
        String menu = Sample.getMenuOptions();
        System.assertNotEquals(null, menu);
        System.assertNotEquals('', menu);
    }
}

SalesforceのSystem assertを活用して単体テストを行う

SalesforceのApexの単体テスト用のテストフレームワークに使用される、System assertについて説明しました。 テストフレームワークの活用にあたり、System assertに代表されるクラスメソッドの知識が必要です。テストクラス、メソッドへの理解の第一歩として理解しておきましょう。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】