Posso verificare l'esistenza di un'annotazione in un test unitario?

9

Ho una gerarchia di classi java formata da una classe Abstract e N estensioni di essa. Nella classe astratta ho un metodo annotato con un'annotazione @Remove. Anche se non otterremo eccezioni di non fallire velocemente se questa annotazione viene rimossa, potremmo ottenere delle eccezioni di memoria, quindi vorrei essere sicuro che notiamo il più rapidamente possibile se questa annotazione scompare in alcuni refactoring.

Sto cercando di creare GUTS (buoni test unitari), quindi ho pensato di poter documentare questo "requisito tecnico" nei miei test, con un test case che lo afferma.

Ma questa non è una funzionalità, è un dettaglio di implementazione e non è legata al comportamento del metodo (il metodo potrebbe essere vuoto, ma deve esistere e deve essere annotato).

È corretto creare un test per questo oppure esiste un altro modo per verificare l'esistenza di questa annotazione?

    
posta JSBach 26.10.2015 - 13:44
fonte

2 risposte

5

Sì, crea un test unitario. Stai dicendo che se l'annotazione viene rimossa, puoi uscire dagli errori di memoria in produzione. Quello sarebbe un bug killer. Lasciare che ciò accada a causa dell'idea che i test dovrebbero in qualche modo essere limitati è controproducente. I test dovrebbero verificare la correttezza in tutti i sensi. Quanto prima si rileva il problema possibile tanto meglio avere un test unitario e il fallimento della configurazione CI è il modo solido per prevenire il bug. Cercare di inventare un altro meccanismo per impedire l'introduzione di un simile bug non sembra valere la pena. Ad ogni nuovo sviluppatore dovrà essere fornita una spiegazione su come gestire il "caso speciale" di nessuno dei test di correttezza funzionale. Probabilmente non è un buon uso del tempo di sviluppo.

Modifica I team che fanno BDD rischiano di separare il test funzionale aziendale dai test tecnici come i test delle prestazioni. In genere i team hanno diversi tipi di test, inclusi test di integrazione eseguiti meno frequentemente rispetto ai test di logica aziendale principale. Questo di solito viene fatto con i profili di build in modo che gli sviluppatori nel loro flusso possano eseguire frequentemente test rapidi di business logic e test di integrazione più lenti prima di eseguire il commit del codice. La build CI eseguirà tutti i test.

    
risposta data 26.10.2015 - 13:53
fonte
2

Quando una funzione critica viene implementata utilizzando una tecnica dichiarativa come questa, tendo a preferire l'uso di un test di integrazione che include la parte del framework che riconosce la dichiarazione. Questo ti protegge dai cambiamenti nel comportamento delle strutture, da equivoci sull'effetto della dichiarazione e così via. Testare semplicemente la presenza dell'annotazione non garantisce alcun comportamento specifico.

    
risposta data 27.10.2015 - 01:29
fonte

Leggi altre domande sui tag