In order to prevent delete transaction to be committed to DB, you need to addError 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;
Test.startTest();
try{
delete accRecord;
System.assertEquals(false, 'An Error was expected');
}catch(DMLexception e){
System.assertEquals(true, e.getMessage().contains('Account Cannot be deleted'),'Account Cannot be deleted');
}
Test.stopTest();
}
}