Per verificare se un test è in esecuzione usare il metodo isRunningTest

Se il test non è in esecuzione significa che si è verificata una eccezione

@isTest
    public static void checkValidationRules(){
        // in questo modo verifico gli errori DMl
		try {
            
            if(Test.isRunningTest()) {
                
                // creo il contatto di test e lo inserisco
                Contact contatto = new Contact();
                contatto.lastName = 'Alessandro';
                insert contatto;
            
                // creo il libro di test e lo inserisco
                Libro__c libro = new Libro__c();          
                libro.Name = 'test libro acquistato 1';
                libro.Genere__c = 'books';
                libro.Giacenza__c = 100;
                libro.ISBN__c = '9788867143337';
                libro.Prezzo__c = 20;
                libro.Contact__c = contatto.Id;        
                insert libro;
                
                // creo lo scontrino di test e lo inserisco
                Scontrino__c scontrino = new Scontrino__c();
                insert scontrino;
                
                // creo l'acquisto di test        
                Acquisto__c newacquisto = new Acquisto__c();
                
                // creo l'acquisto di test e lo inserisco
                newacquisto.Name = 'test acquisto 1';
                newacquisto.Libro__c = libro.id;
                newacquisto.Quantit_acquistate__c = 0;
                newacquisto.Scontrino__c = scontrino.Id;        
                insert newacquisto;
                
                Libro__c ceckTest = [select id,Giacenza__c from Libro__c WHERE Id=: libro.id];
                System.assertEquals(100,ceckTest.Giacenza__c);
                
            }
            
        } catch (DMLException ex) {
            // Existing exception handling.
            System.debug('Si è verificato un errore DML: '+ ex);
        }
    }