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

Help with Test Class - Still getting 0% Coverage



I've been working on trying to create the test class for the below trigger, but I keep getting an error that I have 0% test coverage. Is there a reason that my Test Class is not covering my Trigger? If someone can please help me with this, I would greatly appreciate it - I've been wrestling with it for a few hours to no avail.


Thank you!!



Trigger (it is updating a field on the Opportunity based on a field from a custom child object):


trigger Update_SE_NHC_Assignment_Final on Network_Health_Check__c (before insert, after update) {

//Set the Opportunities to Update
Set<Id> OpportunityforUpdate = new Set<Id>();
  //When adding a new Network Health Check or Updating an existing Network Health Check
  if(trigger.isInsert || trigger.isUpdate || trigger.isDelete ){
for(Network_Health_Check__c n: [Select, from Network_Health_Check__c]) {
  List<Opportunity> OpportunitiesToUpdate = new List <Opportunity>();
  //Update the SE NHC Assignment field on the related Opportunity to match the SE Assigned field on the Network Health Check Object
  for(Opportunity o : [Select Id, SE_NHC_Assignment__c from Opportunity where Id IN :OpportunityforUpdate]){
    o.SE_NHC_Assignment__c =;
  update OpportunitiesToUpdate;




Test Class:


Private class Update_SE_NHC_Assignment_Final_TEST_v2 {

          private static testMethod void myUnitTest() {
         Opportunity thisopp; 
         List<Opportunity> thisOpps = [SELECT id, Name, SE_NHC_Assignment__c FROM Opportunity WHERE id = '0064000000KxQ9v' ];
            if (thisopps.isEmpty()) {
            thisopp = new Opportunity();
   = '0064000000XxX4x';
        } else {
           thisopp = thisopps[0];

     Account ConsumerAccount = new Account(Name = 'Consumer Account', Type = 'Consumer');
    insert ConsumerAccount;  
       Account PartnerAccount = new Account(Name = 'Partner Account', Type = 'Partner');
    insert PartnerAccount;          
     ConsumerAccount = [Select Id, Name from Account where ID = :ConsumerAccount.ID];
     PartnerAccount = [Select Id, Name from Account where ID = :PartnerAccount.ID];

                Network_Health_Check__c n = new Network_Health_Check__c(
                Name = 'SE Assignment Test',
                Primary_Deployment_Location__c = 'Home',
                Primary_Deployment_Location_Type__c = 'HQ',
                Applications_Used__c = 'VoIP',
                Use_case__c = 'Application Analysis & Readiness - Cloud Service and Voice & Video Readiness', 
                Related_Opportunity__c =, 
                Assigned_SE__c = '00540000001ZD6G', 
                Partner_Account__c = PartnerAccount.ID,
                Consumer_Account__c = ConsumerAccount.Id);               
                insert n;
                    update n;
                    Opportunity o = [select id, SE_NHC_Assignment__c from Opportunity where id =];
        } catch (System.DmlException e){
            System.debug('we caught a dml exception: ' + e.getDmlMessage(0));    



  1. Since V24, all testmethods run by default without visibility to any org data. So, your first testmethod Select statement will find nothing.  Your else {} block will never execute
  2. Your testmethod refers to a hard-coded ID - this a) won't be found due to #1 and b) won't exist when you try to run the testmethod during the PROD deployment
  3. Best practice is for the testmethod to create test SObjects before any queries/DML operations that you are trying to test in your code. Refer to 'Testing Apex' in the Apex Developer's Guide