I've written a test code for a class which I thought would be just about 100% coverage - but it's still showing only 0% in the class after the test runs. The class itself is running correctly.
Here is the class :
public class WeeklyMailerOpp_A implements Schedulable
{
public void execute (SchedulableContext scx)
{
List<Wealth__c> recordsA = [
SELECT No_IXI_Relationship__c, Relationship_HHAge__c, Name, OwnerId, Distributed__c,Solicitable__c,Code_Targeted__c,Division_Letter__c FROM Wealth__c
WHERE Distributed__c = false AND Solicitable__c = True AND Code_Targeted__c = 'Yes' AND Relationship_HHAge__c >= 25 AND No_IXI_Relationship__c != True AND Division_Letter__c = 'A' LIMIT 25
];
List<Wealth__c> recordsB = [
SELECT No_IXI_Relationship__c, Relationship_HHAge__c, Name, OwnerId, Distributed__c,Solicitable__c,Code_Targeted__c,Division_Letter__c FROM Wealth__c
WHERE Distributed__c = false AND Solicitable__c = True AND Code_Targeted__c = 'Yes' AND Relationship_HHAge__c >= 25 AND No_IXI_Relationship__c != True AND Division_Letter__c = 'B' LIMIT 25
];
for(Wealth__c recordA : recordsA)
{
recordA.Distributed__c = true;
recordA.Distribution_Date__c = date.TODAY();
}
for(Wealth__c recordB : recordsB)
{
recordB.Distributed__c = true;
recordB.Distribution_Date__c = date.TODAY();
}
update recordsA;
update recordsB;
}
}
...and here is the test code :
@isTest
private class TestWeeklyMailerOpp_A
{
static testMethod void UnitTestWeeklyMailerOpp_A()
{
**String cronExpr = '0 0 0 15 3 ? 2022';
Test.StartTest();
System.schedule('myJobTestJobName', cronExpr, new WeeklyMailerOpp_A());**
Wealth__c mailerA = new Wealth__c();
mailerA.Distributed__c = False;
mailerA.Account__c = '001i000000dmNHI';
mailerA.Code__c = '33';
mailerA.Division__c = 'aCX31000000PAuE';
Wealth__c mailerB = new Wealth__c();
mailerB.Distributed__c = False;
mailerB.Account__c = '001i000000XmrUI';
mailerB.Code__c = '33';
mailerB.Division__c = 'aCX31000000PAuJ';
insert mailerA;
insert mailerB;
List<Wealth__c> recordsA = [
SELECT Name, OwnerId, Solicitable__c,Distributed__c,Code_Targeted__c,Division_Letter__c FROM Wealth__c
WHERE Distributed__c = false AND Solicitable__c = True AND Code_Targeted__c = 'Yes' AND Division_Letter__c = 'A' LIMIT 10
];
for(Wealth__c recordA : recordsA)
{
recordA.Distributed__c = true;
recordA.Distribution_Date__c = date.TODAY();
}
List<Wealth__c> recordsB = [
SELECT Name, OwnerId, Distributed__c,Code_Targeted__c,Division_Letter__c FROM Wealth__c
WHERE Distributed__c = false AND Solicitable__c = True AND Code_Targeted__c = 'Yes' AND Division_Letter__c = 'B' LIMIT 10
];
for(Wealth__c recordB : recordsB)
{
recordB.Distributed__c = true;
recordB.Distribution_Date__c = date.TODAY();
}
update recordsA;
update recordsB;
**Test.stopTest();**
}
}
I must be doing something seriously wrong but I can't figure out what. Any ideas ?