One trigger per object
Keep a single trigger per object that calls a handler class. Use Trigger.new, Trigger.oldMap and context variables like Trigger.isBefore.
trigger ContactTrigger on Contact (before insert) {
ContactHandler.setDefaults(Trigger.new);
}
@isTest
private class ContactHandlerTest {
@isTest static void setsDefaults() {
Contact c = new Contact(LastName = 'Rao');
Test.startTest();
insert c;
Test.stopTest();
System.assertNotEquals(null, [SELECT LeadSource FROM Contact WHERE Id = :c.Id].LeadSource);
}
}Coverage
Production deployments need at least 75% Apex code coverage overall, but good tests assert behaviour, not just lines run.