In order to prevent delete transaction to be committed to DB, you need to [addError][1] to record, that should not be deleted trigger PreventAccountDelete on Account (before delete) { for(Account acc : trigger.old){ acc.addError('Account Cannot be deleted'); } } to test this behavior run the following unit-test @isTest private class PreventAccountDeleteTest { @isTest static void testPreventAccDel(){ Account accRecord = new Account(name='testAccount'); insert accRecord; try{ Test.startTest(); delete accRecord; Test.stopTest(); System.assertEquals(false, 'An Error was expected'); }catch(DMLexception e){ System.assertEquals(true, e.getMessage().contains('Account Cannot be deleted'),'Account Cannot be deleted'); } } } [1]: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_methods_system_sobject.htm