Nell'ultimo anno circa ho sviluppato le mie costolette TDD in modo che ora sono abbastanza bravo nell'essenziale - prima test di scrittura, strutture di derisione, test delle piccole cose possibili, DI ecc.Prendendo il collaudo delle unità al livello successivo
Tuttavia, mi sembra che ci siano ancora molte cose che non riesco a superare.
Ad esempio, spesso trovo che il test delle unità in questo modo non verifichi realmente l'integrazione e nel complesso l'immagine ingrandita di ciò che il mio codice dovrebbe fare. Con tutto ciò che viene deriso, scopro che perdo di vista se i metodi in prova stanno producendo o meno i risultati che effettivamente ho bisogno di , piuttosto che solo i risultati che dicono forniranno. Mentre comincio a muovermi verso BDD, trovo che questo problema è solo esacerbato, con conseguente spreco di tempo di sviluppo e test inefficaci.
Un altro problema è che i test di unità richiedono una grande quantità di manutenzione per mantenerli ordinati, rallentando il refactoring.
Quando ho iniziato a testare le unità, come la maggior parte delle persone, ho scoperto che quello che stavo scrivendo erano davvero test di integrazione. Tuttavia ci sono stati molti vantaggi a questi test: erano molto più semplici da leggere e funzionavano come documentazione decente sull'API dei miei programmi. Inoltre, tendevano a catturare il problema del mondo reale molto più velocemente, piuttosto che i test unitari che trovo trascorrono molto tempo a individuare casi limite che potrebbero derivare solo dall'uso non corretto dell'API (ad esempio riferimenti null, divisione per 0 ecc.).
Quali sono i tuoi pensieri? Potete consigliare buoni libri, articoli o pratiche che affrontino test unitari più avanzati e mantengano la produttività e l'efficacia?
EDIT: Basta un po 'di domande, date le risposte: quindi in pratica stai dicendo che, nonostante tutto questo "test" di unità, non sto davvero testando il codice ... al quale rispondo, "Ma Voglio testare il codice dang! ' Infatti, quando ho scritto molti test di integrazione "più pesanti", ho scoperto che il mio codice tendeva a raggiungere uno stato di correttezza molto più veloce, e gli errori venivano identificati molto prima. È possibile raggiungere questo obiettivo senza i problemi di manutenibilità dei test di integrazione?
@cbp: è _unit_ test. Non è pensato per testare l'integrazione, o un quadro generale. –