Scrittura dei test unitari di base all'interno del file di classe

1

In Python è comune avere "doctest" - semplici test all'interno della documentazione di classi e metodi. Il loro principale vantaggio è che possono essere facilmente eseguiti durante la modifica del codice - quando cambio qualche codice, posso eseguire tutti i test con un solo clic, non devo aprire un altro file.

In Java AFAIK non esiste un "doctest", ma una funzionalità simile può essere implementata semplicemente aggiungendo alla classe un metodo "main" con alcuni test documentali di base. Quindi, di nuovo un programmatore che cambia il codice può eseguire immediatamente i test per vedere se qualcosa è rotto.

Non l'ho visto fare spesso. Una possibile ragione è che rende il file di classe leggermente più grande, ma questo sembra trascurabile. Ci sono altri svantaggi di questa pratica?

    
posta Erel Segal-Halevi 13.09.2017 - 06:39
fonte

2 risposte

1

Un modo per osservare questo è che in genere l'SRP dovrebbe contenere anche i file. Di solito è considerata buona pratica mettere il contenuto relativo ad una cosa specifica anche in un file. In Java questo è incarnato dal principio di avere una classe per file. Ma anche nei linguaggi di scripting senza supporto OO di solito cerchi di limitare la dimensione del file, ad es. suddividere lo script in diversi metodi e inserirli in file separati. Il ragionamento generale è che i file più piccoli facilitano la comprensione e la modifica dei contenuti. Quindi dal mio punto di vista, fare test nello stesso file riordina il suo contenuto.

Tuttavia, ci sono anche argomenti a favore di avere questi test nello stesso file, specialmente come parte della documentazione, poiché i test aiutano significativamente a capire la logica del codice. Hai anche menzionato la più facile esecuzione. Si noti, tuttavia, che questo non è vero per molte altre lingue con supporto IDE tradizionalmente più strong (ad es. Java). Qui posso eseguire tutti test con un solo clic / hotkey.

Alla fine è una questione di compromessi e gusti personali, come lo sono con così tante cose in SE.

    
risposta data 13.09.2017 - 09:28
fonte
5

Nelle comuni configurazioni Java, l'origine si trova in src/main/java e le classi di test in src/test/java . Uno dei vantaggi di questa soluzione è che è relativamente semplice non impacchettare il codice di prova all'interno di un barattolo quando viene messo in produzione. Se hai scritto i test all'interno del file di classe, come faresti a togliere quel codice quando spedisci i binari di produzione?

Inoltre, a parte considerazioni tecniche, questo sembra solo inutilmente disordinato solo per non dover aprire un altro file in un IDE. Il software è abbastanza complicato così com'è, non abbiamo bisogno di introdurre ulteriori complessità che potrebbero essere state relegate in un ambito di lavoro.

    
risposta data 13.09.2017 - 07:55
fonte

Leggi altre domande sui tag