You need to sign in to do that
Don't have an account?
Apex Test Class Help for Simple Trigger
Hi guys,
I am having trouble with a test class for a simple trigger. My test class has no coverage and I am very new when it comes to test classes.
My trigger is pretty basic: When a user creates a Trip Report (custom object :Trip_Report__c), a related record is automatically created that adds the Trip Report owner to the list of meeting attendees (custom object: covance_attendees__c).
trigger createCovanceAttendeeonnewTR on Trip_Report__c (after insert) {
List <Covance_Attendees__c> attToInsert = new List <Covance_Attendees__c> ();
for(Trip_Report__c t: Trigger.new) {
if (t.name<>'1') {
Covance_Attendees__c a = new Covance_Attendees__c ();
a.Attendee_Name__c = t.OwnerId;
a.How_Attended__c = 'In Person';
a.Trip_Report__c = t.id;
attToInsert.add(a);
}//end if
}//end for o
//once loop is done, you need to insert new records in SF
// dml operations might cause an error, so you need to catch it with try/catch block.
try {
insert attToInsert;
} catch (system.Dmlexception e) {
system.debug (e);
}
}
My Test Class has 0% coverage. I'm not sure what I am doing wrong as I don't know Apex very well.
If anyone knows how to fix this code- could you actually "write" the code instead of just telling me how to fix it? If I could see a proper test class in a context I understand, I think it will be a huge help. THANK YOU!!!
public class test_createCovanceAttendeeonnewTR
{
public static testMethod void testcreateCovanceAttendeeonnewTR()
{
//Insert Trip_Report__c
try
{
Trip_Report__c t = new Trip_Report__c(Name='TestMethodMouse1',Call_Objective__c='Follow Up',Visit_Date__c =System.Today());
insert t;
Test.StartTest();
Insert t;
Test.StopTest();
t=[SELECT Name,Trip_Description__c FROM Trip_Report__c WHERE Id = :t.Id];
system.assert (t.Name <> '1');
}
catch (System.DmlException e)
{
System.assert(true);
}
}
}
Did you happen to get any error message when you run the test.?? If you have any validation rules on the Trip_report__c object then make sure that the condition is satisfied when you insert the record in the test class.
Thanks
Sam
All Answers
Hello.
Have you confrimed (via debugging or assets) that your Trip_Report__c record is indeed being created? As long as the record is successfully created, it should have coverage better than 0%. Could it be failiing on a validation rule or required field? i would start by checking the debug log when you run your test coverage - or use asserts to confirm that the record is created....
(note that you'll probably get an error for trying to insert the same record twice - because after the first insert, the Id will be populated.)
thanks
chris
Hi ,
i think the problem was, you were not using the @isTest annotation in the test class. try the below class.
@isTest(SeeAllData=true)
public class test_createCovanceAttendeeonnewTR
{
public static testMethod void testcreateCovanceAttendeeonnewTR()
{
//Insert Trip_Report__c
Trip_Report__c t = new Trip_Report__c(Name='TestMethodMouse1',Call_Object
ive__c='Follow Up',Visit_Date__c =System.Today());
insert t;
}
}
regards
Sam
Coverage still shows 0% when I click "Run Test".
Did you happen to get any error message when you run the test.?? If you have any validation rules on the Trip_report__c object then make sure that the condition is satisfied when you insert the record in the test class.
Thanks
Sam