1. Trigger Code
trigger AccountTrigger on Account (after insert, before update, after update, before Delete) {
	
    if ((Trigger.isDelete) && (Trigger.isBefore)) {
        AccountTriggerHandler.preventAccountDeletionIfActive(Trigger.old);
    }
}
  1. Apex Code
public class AccountTriggerHandler {
		
    public static void preventAccountDeletionIfActive(List<Account> accList) {
		
        for (Account acc : accList) {
            if (acc.Active__c == 'Yes') {
                acc.addError('Active Account cannot be deleted.');
            }
        }
        
    }
    
}
  1. Test Class Code
@isTest
public class AccountTriggerHandlerTest {

    @isTest
    private static void preventAccountDeletionIfActiveTest() {
    		
        List<Account> accList = new List<Account> ();
        
        for (Integer i = 0; i < 3; i++) {
            Account acc = new Account(Name = 'Account', Active__c = 'Yes');
            accList.add(acc);
        }
        
        Test.StartTest();
        insert accList;
        
        try {
            delete accList;
            System.assert(false, 'Expected a DMLException but none was thrown.');
        } catch (Exception e) {
            System.assertEquals(true, e.getMessage().contains('Active Account cannot be deleted.'), e.getMessage());
        }
        
        Test.StopTest();
        
    }
    
}