Trailhead Apex 単体テストを作成するサンプル
環境
Salesforce Apex
課題
単純な Apex クラスの単体テストを作成する
日付が適切な範囲内かどうかをテストし、範囲外の場合は範囲内の月末日を返す単純な Apex クラスを作成してインストールします。クラスのコードは ハンズオン Challenge 準備セクションからコピーします。その後でコードカバー率 100% を達成する単体テストを作成します。
Apex クラスを作成する:
名前: VerifyDate
コード: 上記のハンズオン Challenge の「準備」セクションからコピー
単体テストを別のテストクラスに配置する:
名前: TestVerifyDate
目標: コードカバー率 100%
テストクラスを少なくとも 1 回実行する
1.Apex クラスを作成する
public class VerifyDate { //2つの日付に対する潜在的なチェックを処理する方法 public static Date CheckDates(Date date1, Date date2) { //日付2が日付1の次の30日以内であれば、日付2を使用します。それ以外の場合は月末を使用します。 if(DateWithin30Days(date1,date2)) { return date2; } else { return SetEndOfMonthDate(date1); } } //日付が日付 1 から 30 日以内であるかどうかを確認する方法v private static Boolean DateWithin30Days(Date date1, Date date2) { //date2が過去かどうか確認する if( date2 < date1) { return false; } //日付2が日付1から30日以内(>=)であることを確認する Date date30Days = date1.addDays(30); //create a date 30 days away from date1 if( date2 >= date30Days ) { return false; } else { return true; } } //指定された日付の月の末日を返すメソッド private static Date SetEndOfMonthDate(Date date1) { Integer totalDays = Date.daysInMonth(date1.year(), date1.month()); Date lastDay = Date.newInstance(date1.year(), date1.month(), totalDays); return lastDay; } }
2.単体テストのクラスを作成します
@isTest public class TestVerifyDate { @isTest static void CheckDatesPast() { Date pri = VerifyDate.CheckDates(Date.TODAY() ,Date.TODAY().addDays(-5)); System.assertEquals(Date.newInstance(2023, 12, 31), pri); } @isTest static void CheckDatesFurture5() { Date pri = VerifyDate.CheckDates(Date.TODAY() ,Date.TODAY().addDays(5)); System.assertEquals(Date.newInstance(2023, 12, 31), pri); } @isTest static void CheckDatesFurture31() { Date pri = VerifyDate.CheckDates(Date.TODAY() ,Date.TODAY().addDays(31)); System.assertEquals(Date.TODAY().addDays(31), pri); } }