Voglio introdurre il concetto di unit test (e test in generale) ai miei collaboratori; in questo momento non ci sono test e le cose vengono testate eseguendo effettivamente le attività tramite l'interfaccia utente per vedere il risultato desiderato. Come puoi immaginare, il codice è strettamente associato all'implementazione esatta, anche con il risultato che il codice che dovrebbe essere in una classe e riutilizzato in tutto il sistema viene copiato e incollato tra i metodi.
A causa dei mutati requisiti, mi è stato chiesto di modificare un modulo che ho scritto in precedenza e che è abbastanza vagamente accoppiato (non quanto vorrei, ma come meglio posso ottenere senza dover introdurre molti altri concetti). Ho deciso di includere una serie di unit test con il mio codice rivisto per "dimostrare" che funziona come previsto e dimostrare come funzionano i test; Non sto seguendo il vero TDD poiché parte del codice è già stato scritto, ma spero di seguire alcuni concetti TDD per il nuovo codice che dovrò creare.
Ora, inevitabilmente, sono sicuro che mi verrà chiesto perché mi ci vuole più di un giorno o due per scrivere il codice, poiché parti di ciò con cui interagirò già esistono nel sistema (anche se senza test e molto strettamente accoppiato), e quando controllo il codice mi verrà chiesto quale sia questo progetto "Test". Posso spiegare le basi del test, ma non posso spiegare i vantaggi effettivi in un modo che gli altri potrebbero capire (perché pensano che il test richieda l'esecuzione dell'app da soli, poiché spesso l'interfaccia utente effettiva conta nel determinare se la funzione "funziona" " o no). Non capiscono l'idea di un accoppiamento libero (chiaramente evidente dal fatto che nulla è liberamente accoppiato; non ci sono nemmeno interfacce al di fuori del codice che ho scritto), quindi provare a usarlo come beneficio probabilmente mi farebbe guadagnare un "Eh?" un po 'di aspetto, e di nuovo non posso essere così lento come vorrei senza dover rielaborare diversi moduli esistenti e probabilmente introdurre un qualche tipo di contenitore IoC, che sarebbe visto come perdere tempo e non "programmare".
Qualcuno ha qualche suggerimento su come posso puntare a questo codice e dire "Dovremmo iniziare a creare unit test" senza apparire né condiscendenti (ad esempio "Scrivere test ti costringe a scrivere un buon codice", che probabilmente verrebbe assunto per significare codice tranne che il mio è cattivo ) o senza far sembrare una perdita di tempo che non aggiunge alcun valore reale?