function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Krista KellyKrista Kelly 

Help with apex test class July 27th 2020

Hello, 

I have a Apex class that select records where a field > 0. It then loops through these leads and creates a record in a custom object (Metrics__c). Based on the date it creates a record with a 0 value or with a value > 0. The class works great (tested in Dev Console as a batch) but I'm going in cirlces trying to get the test class past 61%. Any help would be appreciated!

Apex Class

global class MetricProcessor implements Database.Batchable <SObject>,Schedulable {
//START METHOD
global Database.QueryLocator start(Database.BatchableContext bc){

    
    String Query= 'select Id, Console_Logins__c, Console_Last_Logins_Date_Field__c, EP_Catalog__c, EP_Catalog_Date_Field__c, EP_Designer__c, EP_Designer_Date_Field__c, EP_Discovery__c,EP_Discovery_Date_Field__c From Lead where Console_Logins__c > 0';

    return Database.getQueryLocator(Query);

        }

//EXECUTE METHOD

global void execute(Database.BatchableContext bc, List<Lead> scope){

    for(Lead l: scope){

        IF (l.Console_Last_Logins_Date_Field__c > (system.today() - 1))
   {
        //insert record
         
    Metrics__c met = new Metrics__c(
    
         Lead__c=l.ID,

        Name='ConsoleLogins',

        Metric_Value__c=l.Console_Logins__c,

        Metric_Date__c= system.today());

       
    insert met;

    }
    Else
       {//insert 0 record
         Metrics__c met = new Metrics__c(
    
         Lead__c=l.ID,

        Name='ConsoleLogins',

        Metric_Value__c= 0,

        Metric_Date__c= system.today());
        
         insert met;
    }
            IF (l.EP_Catalog_Date_Field__c > (system.today() - 1))
   {
        //insert record
         
    Metrics__c met = new Metrics__c(
    
         Lead__c=l.ID,

        Name='EPCatalog',

        Metric_Value__c=l.EP_Catalog__c,

        Metric_Date__c= system.today());

       
    insert met;

    }
    Else
       {//insert 0 record
         Metrics__c met = new Metrics__c(
    
         Lead__c=l.ID,

        Name='EPCatalog',

        Metric_Value__c= 0,

        Metric_Date__c= system.today());
        
         insert met;
    }
            IF (l.EP_Designer_Date_Field__c > (system.today() - 1))
   {
        //insert record
         
    Metrics__c met = new Metrics__c(
    
         Lead__c=l.ID,

        Name='EPDesigner',

        Metric_Value__c=l.EP_Designer__c,

        Metric_Date__c= system.today());

       
    insert met;

    }
    Else
       {//insert 0 record
         Metrics__c met = new Metrics__c(
    
         Lead__c=l.ID,

        Name='EPDesigner',

        Metric_Value__c= 0,

        Metric_Date__c= system.today());
        
         insert met;
    }
            IF (l.EP_Discovery_Date_Field__c > (system.today() - 1))
   {
        //insert record
         
    Metrics__c met = new Metrics__c(
    
         Lead__c=l.ID,

        Name='EPDiscovery',

        Metric_Value__c=l.EP_Discovery__c,

        Metric_Date__c= system.today());

       
    insert met;

    }
    Else
       {//insert 0 record
         Metrics__c met = new Metrics__c(
    
         Lead__c=l.ID,

        Name='EPDiscovery',

        Metric_Value__c= 0,

        Metric_Date__c= system.today());
        
         insert met;
    }
    }

    update scope;

}


   

//FINISH METHOD

global void finish(Database.BatchableContext bc){

    Id job= bc.getJobId();

    System.debug(job);

}

 

 global void execute(SchedulableContext SC) {

 MetricProcessor l= new MetricProcessor();

ID batchprocessid = Database.executeBatch(l);

}

}

Test Class

@istest
private class MetricProcessorTest {
    @istest

    static void tetslead(){
        List<Lead> l= new List<Lead>();
        lead l1= new Lead();
        l1.LastName='Chaytor';
        l1.Company='Solace';
        l1.Status='Working';
        l1.Console_Logins_Last_Modified__c = system.now();
        l1.Console_Logins__c = 2;
        l1.EP_Catalog_Last_Modified__c = system.now()-2;
        l1.EP_Catalog__c = 0;
        l1.EP_Designer_Last_Modified__c = system.now()-2;
        l1.EP_Designer__c = 0;
        l1.EP_Discovery_Last_Modified__c = system.now();
        l1.EP_Discovery__c = 1;
        l1.LeadSource='Dreamforce';
        l.add(l1);
        insert l;
        
      List<Metrics__c> m= new List<Metrics__c>();
        Metrics__c m1= new Metrics__c();
        m1.Lead__c = l1.Id;
        m1.Name = 'ConsoleLogins';
        m1.Metric_Value__c = 2;
       // m1.Metric_Date__c = system.today();
        
        m.add(m1);
        insert m;
        
        List<Metrics__c> m2= new List<Metrics__c>();
        Metrics__c m3= new Metrics__c();
        m3.Lead__c = l1.Id;
        m3.Name = 'EPCatalog';
        m3.Metric_Value__c = 0;
        //m3.Metric_Date__c = system.today()-;
        
        m2.add(m3);
        insert m2;
        
        List<Metrics__c> m4= new List<Metrics__c>();
        Metrics__c m5= new Metrics__c();
        m5.Lead__c = l1.Id;
        m5.Name = 'EPDesigner';
        m5.Metric_Value__c = 0;
        //m3.Metric_Date__c = system.today()-;
        
        m4.add(m5);
        insert m4;
        
        List<Metrics__c> m7= new List<Metrics__c>();
        Metrics__c m8= new Metrics__c();
        m8.Lead__c = l1.Id;
        m8.Name = 'EPDiscovery';
        m8.Metric_Value__c = 1;
        //m3.Metric_Date__c = system.today()-;
        
        m7.add(m8);
        insert m7;

        
        
    Test.startTest();
    MetricProcessor lp= new MetricProcessor();
    Id jobid= Database.executeBatch(lp);
        String sch = '0 0 * * * ?';
 
system.schedule('ReassignAccountOwner', sch, lp);

       
     
    
 
    Test.stopTest();

    }

}
Best Answer chosen by Krista Kelly
Andrew GAndrew G
The issue, as is often the case, is building the test data to ensure we get into every branch of the IF ... ELSE ... structure.

First, a tweak to your code, you have a loop where you are inserting the records inside the loop one by one.  This is not good for bulkification, so lets build a list to hold the new records and do the insert outside the loop.
 
global class MetricProcessor implements Database.Batchable <SObject>,Schedulable {
//START METHOD
    global Database.QueryLocator start(Database.BatchableContext bc){
        String Query= 'select Id, Console_Logins__c, Console_Last_Logins_Date_Field__c, EP_Catalog__c, EP_Catalog_Date_Field__c, EP_Designer__c, EP_Designer_Date_Field__c, EP_Discovery__c,EP_Discovery_Date_Field__c From Lead where Console_Logins__c > 0';
        return Database.getQueryLocator(Query);
    }

//EXECUTE METHOD

    global void execute(Database.BatchableContext bc, List<Lead> scope){
        //create a list so we do one insert for all the Metrics records
        List<Metrics__c> newMetrics = new List<Metrics__c>;
        for(Lead l: scope){
            if (l.Console_Last_Logins_Date_Field__c > (System.today() - 1))
            {
                Metrics__c met = new Metrics__c(
                        Lead__c=l.Id,
                        Name='ConsoleLogins',
                        Metric_Value__c=l.Console_Logins__c,
                        Metric_Date__c= System.today());
                newMetrics.add(met) ;
            }
            else
            {//insert 0 record
                Metrics__c met = new Metrics__c(
                        Lead__c=l.Id,
                        Name='ConsoleLogins',
                        Metric_Value__c= 0,
                        Metric_Date__c= System.today());
                newMetrics.add(met) ;
            }
            if (l.EP_Catalog_Date_Field__c > (System.today() - 1))
            {
                //insert record
                Metrics__c met = new Metrics__c(
                        Lead__c=l.Id,
                        Name='EPCatalog',
                        Metric_Value__c=l.EP_Catalog__c,
                        Metric_Date__c= System.today());
                newMetrics.add(met) ;
            }
            else
            {//insert 0 record
                Metrics__c met = new Metrics__c(
                        Lead__c=l.Id,
                        Name='EPCatalog',
                        Metric_Value__c= 0,
                        Metric_Date__c= System.today());
                newMetrics.add(met) ;
            }
            if (l.EP_Designer_Date_Field__c > (System.today() - 1))
            {
                //insert record
                Metrics__c met = new Metrics__c(
                        Lead__c=l.Id,
                        Name='EPDesigner',
                        Metric_Value__c=l.EP_Designer__c,
                        Metric_Date__c= System.today());
                newMetrics.add(met) ;
            }
            else
            {//insert 0 record
                Metrics__c met = new Metrics__c(
                        Lead__c=l.Id,
                        Name='EPDesigner',
                        Metric_Value__c= 0,
                        Metric_Date__c= System.today());
                newMetrics.add(met) ;
            }
            if (l.EP_Discovery_Date_Field__c > (System.today() - 1))
            {
                //insert record
                Metrics__c met = new Metrics__c(
                        Lead__c=l.Id,
                        Name='EPDesigner',     //should this be 'EPDiscovery'
                        Metric_Value__c=l.EP_Discovery__c,
                        Metric_Date__c= System.today());
                newMetrics.add(met) ;
            }
            else
            {//insert 0 record
                Metrics__c met = new Metrics__c(
                        Lead__c=l.Id,
                        Name='EPDiscovery',
                        Metric_Value__c= 0,
                        Metric_Date__c= System.today());
                newMetrics.add(met) ;
            }
        }
        insert newMetrics;
        update scope;
    }

//FINISH METHOD

    global void finish(Database.BatchableContext bc){
        Id job= bc.getJobId();
        System.debug(job);
    }

    global void execute(SchedulableContext SC) {
        MetricProcessor l= new MetricProcessor();
        Id batchprocessid = Database.executeBatch(l);
    }

}

Now when we do our test class lets build more than one test so that we can hit all the branches and do some asserts that have some meaning.
 
@IsTest
private class MetricProcessorTest {
    @IsTest
    static void testInsertMetrics(){
        List<Lead> l= new List<Lead>();
        Lead l1= new Lead();
        l1.LastName='Chaytor';
        l1.Company='Solace';
        l1.Status='Working';
        l1.Console_Logins_Last_Modified__c = System.now();
        l1.Console_Logins__c = 1;
        l1.EP_Catalog_Last_Modified__c = System.now();
        l1.EP_Catalog__c = 2;
        l1.EP_Designer_Last_Modified__c = System.now();
        l1.EP_Designer__c = 3;
        l1.EP_Discovery_Last_Modified__c = System.now();
        l1.EP_Discovery__c = 4;
        l1.LeadSource='Dreamforce';
        l.add(l1);
        insert l;

        Test.startTest();
        MetricProcessor lp= new MetricProcessor();
        Id jobid= Database.executeBatch(lp);
        String sch = '0 0 * * * ?';

        System.schedule('ReassignAccountOwner', sch, lp);

        Test.stopTest();

        List<Metrics__c> newMetrics = new List<Metrics__c>();

        newMetrics = [SELECT Id, Name, Metric_Value__c, Metric_Date__c FROM Metrics WHERE Lead__c = :li.Id  ORDER BY Metric__value__c];

        System.assertEquals(4,newMetrics.size());

        System.assertEquals(1,newMetrics[0].Metric_Value__c);
        System.assertEquals('ConsoleLogins',newMetrics[0].Name);
        System.assertEquals(2,newMetrics[1].Metric_Value__c);
        System.assertEquals('EPCatalog',newMetrics[1].Name);
        System.assertEquals(3,newMetrics[2].Metric_Value__c);
        System.assertEquals('EPDesigner',newMetrics[2].Name);
        System.assertEquals(4,newMetrics[3].Metric_Value__c);
        System.assertEquals('EPDesigner',newMetrics[3].Name);

    }

    @IsTest
    static void testInsertZeroMetrics(){
        List<Lead> l= new List<Lead>();
        Lead l1= new Lead();
        l1.LastName='Chaytor';
        l1.Company='Solace';
        l1.Status='Working';
        l1.Console_Logins_Last_Modified__c = System.now()-2;
        l1.Console_Logins__c = 1;
        l1.EP_Catalog_Last_Modified__c = System.now()-2;
        l1.EP_Catalog__c = 2;
        l1.EP_Designer_Last_Modified__c = System.now()-2;
        l1.EP_Designer__c = 3;
        l1.EP_Discovery_Last_Modified__c = System.now()-2;
        l1.EP_Discovery__c = 4;
        l1.LeadSource='Dreamforce';
        l.add(l1);
        insert l;

        Test.startTest();
        MetricProcessor lp= new MetricProcessor();
        Id jobid= Database.executeBatch(lp);
        String sch = '0 0 * * * ?';

        System.schedule('ReassignAccountOwner', sch, lp);

        Test.stopTest();

        List<Metrics__c> newMetrics = new List<Metrics__c>();

        newMetrics = [SELECT Id, Name, Metric_Value__c, Metric_Date__c FROM Metrics WHERE Lead__c = :li.Id  ORDER BY Name];

        System.assertEquals(4,newMetrics.size());

        System.assertEquals(0,newMetrics[0].Metric_Value__c);
        System.assertEquals('ConsoleLogins',newMetrics[0].Name);
        System.assertEquals(0,newMetrics[1].Metric_Value__c);
        System.assertEquals('EPCatalog',newMetrics[1].Name);
        System.assertEquals(0,newMetrics[2].Metric_Value__c);
        System.assertEquals('EPDesigner',newMetrics[2].Name);
        System.assertEquals(0,newMetrics[3].Metric_Value__c);
        System.assertEquals('EPDiscovery',newMetrics[3].Name);

    }

}

Note that in the first test method we have test data that will fulfill all the IF components of the code.   In the second test , we have data that will drive into each of the ELSE components of the code.


Also note, that when posting code, the code snippet button helps make the code more readable:
User-added image

Regards

Andrew

P.S.  all code is provided uncompiled and As-Is.
 

All Answers

Andrew GAndrew G
The issue, as is often the case, is building the test data to ensure we get into every branch of the IF ... ELSE ... structure.

First, a tweak to your code, you have a loop where you are inserting the records inside the loop one by one.  This is not good for bulkification, so lets build a list to hold the new records and do the insert outside the loop.
 
global class MetricProcessor implements Database.Batchable <SObject>,Schedulable {
//START METHOD
    global Database.QueryLocator start(Database.BatchableContext bc){
        String Query= 'select Id, Console_Logins__c, Console_Last_Logins_Date_Field__c, EP_Catalog__c, EP_Catalog_Date_Field__c, EP_Designer__c, EP_Designer_Date_Field__c, EP_Discovery__c,EP_Discovery_Date_Field__c From Lead where Console_Logins__c > 0';
        return Database.getQueryLocator(Query);
    }

//EXECUTE METHOD

    global void execute(Database.BatchableContext bc, List<Lead> scope){
        //create a list so we do one insert for all the Metrics records
        List<Metrics__c> newMetrics = new List<Metrics__c>;
        for(Lead l: scope){
            if (l.Console_Last_Logins_Date_Field__c > (System.today() - 1))
            {
                Metrics__c met = new Metrics__c(
                        Lead__c=l.Id,
                        Name='ConsoleLogins',
                        Metric_Value__c=l.Console_Logins__c,
                        Metric_Date__c= System.today());
                newMetrics.add(met) ;
            }
            else
            {//insert 0 record
                Metrics__c met = new Metrics__c(
                        Lead__c=l.Id,
                        Name='ConsoleLogins',
                        Metric_Value__c= 0,
                        Metric_Date__c= System.today());
                newMetrics.add(met) ;
            }
            if (l.EP_Catalog_Date_Field__c > (System.today() - 1))
            {
                //insert record
                Metrics__c met = new Metrics__c(
                        Lead__c=l.Id,
                        Name='EPCatalog',
                        Metric_Value__c=l.EP_Catalog__c,
                        Metric_Date__c= System.today());
                newMetrics.add(met) ;
            }
            else
            {//insert 0 record
                Metrics__c met = new Metrics__c(
                        Lead__c=l.Id,
                        Name='EPCatalog',
                        Metric_Value__c= 0,
                        Metric_Date__c= System.today());
                newMetrics.add(met) ;
            }
            if (l.EP_Designer_Date_Field__c > (System.today() - 1))
            {
                //insert record
                Metrics__c met = new Metrics__c(
                        Lead__c=l.Id,
                        Name='EPDesigner',
                        Metric_Value__c=l.EP_Designer__c,
                        Metric_Date__c= System.today());
                newMetrics.add(met) ;
            }
            else
            {//insert 0 record
                Metrics__c met = new Metrics__c(
                        Lead__c=l.Id,
                        Name='EPDesigner',
                        Metric_Value__c= 0,
                        Metric_Date__c= System.today());
                newMetrics.add(met) ;
            }
            if (l.EP_Discovery_Date_Field__c > (System.today() - 1))
            {
                //insert record
                Metrics__c met = new Metrics__c(
                        Lead__c=l.Id,
                        Name='EPDesigner',     //should this be 'EPDiscovery'
                        Metric_Value__c=l.EP_Discovery__c,
                        Metric_Date__c= System.today());
                newMetrics.add(met) ;
            }
            else
            {//insert 0 record
                Metrics__c met = new Metrics__c(
                        Lead__c=l.Id,
                        Name='EPDiscovery',
                        Metric_Value__c= 0,
                        Metric_Date__c= System.today());
                newMetrics.add(met) ;
            }
        }
        insert newMetrics;
        update scope;
    }

//FINISH METHOD

    global void finish(Database.BatchableContext bc){
        Id job= bc.getJobId();
        System.debug(job);
    }

    global void execute(SchedulableContext SC) {
        MetricProcessor l= new MetricProcessor();
        Id batchprocessid = Database.executeBatch(l);
    }

}

Now when we do our test class lets build more than one test so that we can hit all the branches and do some asserts that have some meaning.
 
@IsTest
private class MetricProcessorTest {
    @IsTest
    static void testInsertMetrics(){
        List<Lead> l= new List<Lead>();
        Lead l1= new Lead();
        l1.LastName='Chaytor';
        l1.Company='Solace';
        l1.Status='Working';
        l1.Console_Logins_Last_Modified__c = System.now();
        l1.Console_Logins__c = 1;
        l1.EP_Catalog_Last_Modified__c = System.now();
        l1.EP_Catalog__c = 2;
        l1.EP_Designer_Last_Modified__c = System.now();
        l1.EP_Designer__c = 3;
        l1.EP_Discovery_Last_Modified__c = System.now();
        l1.EP_Discovery__c = 4;
        l1.LeadSource='Dreamforce';
        l.add(l1);
        insert l;

        Test.startTest();
        MetricProcessor lp= new MetricProcessor();
        Id jobid= Database.executeBatch(lp);
        String sch = '0 0 * * * ?';

        System.schedule('ReassignAccountOwner', sch, lp);

        Test.stopTest();

        List<Metrics__c> newMetrics = new List<Metrics__c>();

        newMetrics = [SELECT Id, Name, Metric_Value__c, Metric_Date__c FROM Metrics WHERE Lead__c = :li.Id  ORDER BY Metric__value__c];

        System.assertEquals(4,newMetrics.size());

        System.assertEquals(1,newMetrics[0].Metric_Value__c);
        System.assertEquals('ConsoleLogins',newMetrics[0].Name);
        System.assertEquals(2,newMetrics[1].Metric_Value__c);
        System.assertEquals('EPCatalog',newMetrics[1].Name);
        System.assertEquals(3,newMetrics[2].Metric_Value__c);
        System.assertEquals('EPDesigner',newMetrics[2].Name);
        System.assertEquals(4,newMetrics[3].Metric_Value__c);
        System.assertEquals('EPDesigner',newMetrics[3].Name);

    }

    @IsTest
    static void testInsertZeroMetrics(){
        List<Lead> l= new List<Lead>();
        Lead l1= new Lead();
        l1.LastName='Chaytor';
        l1.Company='Solace';
        l1.Status='Working';
        l1.Console_Logins_Last_Modified__c = System.now()-2;
        l1.Console_Logins__c = 1;
        l1.EP_Catalog_Last_Modified__c = System.now()-2;
        l1.EP_Catalog__c = 2;
        l1.EP_Designer_Last_Modified__c = System.now()-2;
        l1.EP_Designer__c = 3;
        l1.EP_Discovery_Last_Modified__c = System.now()-2;
        l1.EP_Discovery__c = 4;
        l1.LeadSource='Dreamforce';
        l.add(l1);
        insert l;

        Test.startTest();
        MetricProcessor lp= new MetricProcessor();
        Id jobid= Database.executeBatch(lp);
        String sch = '0 0 * * * ?';

        System.schedule('ReassignAccountOwner', sch, lp);

        Test.stopTest();

        List<Metrics__c> newMetrics = new List<Metrics__c>();

        newMetrics = [SELECT Id, Name, Metric_Value__c, Metric_Date__c FROM Metrics WHERE Lead__c = :li.Id  ORDER BY Name];

        System.assertEquals(4,newMetrics.size());

        System.assertEquals(0,newMetrics[0].Metric_Value__c);
        System.assertEquals('ConsoleLogins',newMetrics[0].Name);
        System.assertEquals(0,newMetrics[1].Metric_Value__c);
        System.assertEquals('EPCatalog',newMetrics[1].Name);
        System.assertEquals(0,newMetrics[2].Metric_Value__c);
        System.assertEquals('EPDesigner',newMetrics[2].Name);
        System.assertEquals(0,newMetrics[3].Metric_Value__c);
        System.assertEquals('EPDiscovery',newMetrics[3].Name);

    }

}

Note that in the first test method we have test data that will fulfill all the IF components of the code.   In the second test , we have data that will drive into each of the ELSE components of the code.


Also note, that when posting code, the code snippet button helps make the code more readable:
User-added image

Regards

Andrew

P.S.  all code is provided uncompiled and As-Is.
 
This was selected as the best answer
Krista KellyKrista Kelly
Andrew, thank you SO much! It’s now at 100% code coverage. I’m new to Apex and was struggling so I really appreciate you helping me!
jey welljey well
Best collection of Sad Shayari (https://statussove.com/sad-shayari/) in Hindi and English
bitol brobitol bro
thanks for sharing this good content with us best  rain whatsapp status video download (https://videosongsstatus.com/rain-romantic-whatsapp-status-video-download/ (https://videosongsstatus.com/rain-romantic-whatsapp-status-video-download/" target="_self))
Divyam NigamDivyam Nigam
I am 101% sure that you can't do callouts after DML because I already faced this. There might be a reason behind this architecture.I am not sure about future method. Let me know If you want me to confirm this. Also checkout my blog Happy Diwali Wishes 2020 in English & Hindi (https://happydiwaliimagess.com/happy-diwali-2020-wishes-quotes-sms-message/)
Divyam NigamDivyam Nigam
Andrew, thank you SO much! It’s now at 100% code coverage. I’m new to Apex and was struggling so I really appreciate you helping me! Hotstar Premium mod Apk  (https://apkdrop.com/hotstar-mod-apk/)
Nick MenaNick Mena
Wow thats a nice answer and you have answere it before i could answer 

Being a dik download https://sites.google.com/view/beingadikdownload/ (https://sites.google.com/view/beingadikdownload/)
santosh das 21santosh das 21
Hey want to download new free stock of cb background hd (https://www.mmppicture.co.in/cb-background-hd/) let download 100 of new free stock. If you wish you can also download text png (https://www.mmppicture.co.in/text-png-hd/) for your picsart and photoshop editing.
Promo markPromo mark
In this tutorial, I am going to show you how to write an Apex Hello ... Next, click “Mavens Mate > Metadata > New Apex Class. ... Click “Mavens Mate > Unit Testing > Open Apex Test Runner UI.” ... Rob Meyer July 27 (https://surveyz.onl/www-rubysfeedback-com/), 2020, • 2 min read ... Podcasts · Webcasts · Knowledge Center · Status · Contact Support.
CM Pandey 4CM Pandey 4
Andrew, thank you SO much! 

I have few sites had amazingly work..

Studio Background (https://psdpedia.com/) | Whatsapp Group (https://wpgroupurl.psdpedia.com/)

 
james wall 12james wall 12

Thank you soo much, I appreciate you for this (https://gettweetvideo.com/how-to-save-videos-from-twitter/) Awesome work. keep it up.
alltvsong gaanealltvsong gaane
Andrew, thank you SO much! It’s now at 100% code coverage. I’m new to Apex and was struggling so I really appreciate you helping me! trendnut (https://trendnut.com) some of tips with us lyricsmust (https://lyricsmust.com) also learn hitechsky (https://hitechsky.com) tech infos. Thanks!
Divyam NigamDivyam Nigam
Hey Andrew G, Reallt thank you very much for this insane and valuable information. It really help us a lot It’s now at 100% code coverage. Actually I was looking for Cartoon Video Maker. Thank Very Much again. Checkout Me at Apps (https://dlmodsapk.com)
Mabel GoodrichMabel Goodrich
That's great and really so useful for learning the every pros and cons about the apex test class. Like mine, many of the new learners and developers want to practice such interesting and effective practicing code for learning better. I have currently engaging with the Tiktok dla dorosłych (https://flirtymania.plus/pl/p/1319157) things for making them happy with erotic things in online. By the way, this coding example is so working as an inspirational element for the learning. Thanks for sharing.