Get Started with Apex Unit Tests



以下是Apex單元測試的好處

維護數據安全是我們的首要任務。

我們不會在您的組織中查看或修改任何數據,並且所有測試都在運行於安全數據中心的副本中完成



部署的代碼覆蓋率要求

在將代碼部署或打包到Lightning Platform AppExchange之前測試必須覆蓋至少75%的Apex代碼並且所有這些測試都必須通過。此外,每個觸發器必須具有一定的覆蓋範圍。即使代碼覆蓋是部署的要求,也不要僅僅爲了滿足此要求而編寫測試。確保測試您應用中的常見用例,包括肯定和否定測試用例以及批量和單記錄處理。



測試方法的可見性並不重要,因此將測試方法聲明爲公共方法或私有方法並沒有什麼不同,因爲測試框架始終能夠訪問測試方法。

因此,語法中省略了訪問修飾符





將測試類用於單元測試,則將其聲明爲私有公共測試類通常用於測試數據工廠類



TemperatureConverter.apxc

public class TemperatureConverter {
    // Takes a Fahrenheit temperature and returns the Celsius equivalent.
    public static Decimal FahrenheitToCelsius(Decimal fh) {
        Decimal cs = (fh - 32) * 5/9;
        return cs.setScale(2);
    }
}

 TemperatureConverterTest.apxc

@isTest
private class TemperatureConverterTest {
    @isTest static void testWarmTemp() {
        Decimal celsius = TemperatureConverter.FahrenheitToCelsius(70);
        System.assertEquals(21.11,celsius);
    }
    
    @isTest static void testFreezingPoint() {
        Decimal celsius = TemperatureConverter.FahrenheitToCelsius(32);
        System.assertEquals(0,celsius);
    }
    @isTest static void testBoilingPoint() {
        Decimal celsius = TemperatureConverter.FahrenheitToCelsius(212);        
        System.assertEquals(100,celsius,'Boiling point temperature is not expected.');
    } 
    
    @isTest static void testNegativeTemp() {
        Decimal celsius = TemperatureConverter.FahrenheitToCelsius(-10);
        System.assertEquals(-23.33,celsius);
    }
      
}



默認情況下,Apex測試無權訪問組織中的現有數據,除了訪問設置和元數據對象(例如用戶或配置文件對象)外



Create a unit test for a simple Apex class

VerifyDate.apxc

public class VerifyDate {
    
    public static Date CheckDates(Date date1, Date date2) {
        if(DateWithin30Days(date1,date2)) {
            return date2;
        } else {
            return SetEndOfMonthDate(date1);
        }
    }
    
    private static Boolean DateWithin30Days(Date date1, Date date2) {
        if( date2 < date1) { return false; }
        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;
    }
}

TestVerifyDate.apxc

@isTest
private class TestVerifyDate {
    static testMethod void TestVerifyDate() {
      VerifyDate.CheckDates(System.today(),System.today().addDays(10));
       VerifyDate.CheckDates(System.today(),System.today().addDays(78));
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章