O più in generale: per attivare gli errori del compilatore nei progetti di test se qualcosa che può essere controllato al momento della compilazione è sbagliato?
In linea di principio, perché no. Un test fallito è un test fallito, indipendentemente dal fatto che avvenga in fase di compilazione o in fase di esecuzione. Gli errori nel tempo di compilazione possono anche verificarsi senza un'asserzione esplicita statica.
D'altra parte, se i tuoi test unitari vengono eseguiti solo di rado (vergogna su di te), dì ogni dozzina di check-in, allora un controllo del tempo di compilazione potrebbe ostacolarti nello scoprire se ci sono più rotture. Questo dipende dalla struttura della build e da come sono organizzati i test.
Sì, va bene usare asserzioni statiche / in fase di compilazione nei test unitari
Secondo la mia esperienza, molti sviluppatori non eseguono test sufficienti, sebbene possano compilarli. In un ambiente complesso, non è necessariamente possibile eseguire i test di unità sulla macchina di compilazione (configurazione dell'ambiente, ecc.) Ma è possibile compilare i test di unità. Le affermazioni statiche troverebbero problemi a quel punto, indipendentemente dal fatto che fossero stati eseguiti.
Inoltre, abbiamo scoperto che è meno invadente aggiungere i test di unità all'elenco di oggetti che devono essere compilati rispetto a forzare le persone a compilare, quindi eseguire un programma di test dell'unità prima di consentire loro di compilare / impacchettare il principale codice. Il tuo chilometraggio può variare, naturalmente.
Leggi altre domande sui tag unit-testing assertions