Sono un principiante del test delle unità e sto seguendo alcuni consigli sulle migliori pratiche. Sto codificando in Cocoa usando Xcode.File di dati esterni per i test delle unità
Ho un metodo che convalida un URL inserito da un utente. Voglio che accetti solo il protocollo http: // e accetti solo URL con caratteri validi.
È accettabile un test per questo e utilizzare un file di dati di test? Il file di dati fornisce esempi di URL validi/non validi e se l'URL debba o meno essere convalidato. Sto anche usando questo per controllare la descrizione e il dominio del messaggio di errore.
Perché sto facendo questo
Ho letto Pragmatic Unit Testing in Java con JUnit e questo dà un esempio con un file di dati esterni, che mi fa pensare questo è OK. Inoltre significa che non ho bisogno di scrivere molti test unitari con codice molto simile solo per testare dati diversi.
Ma d'altra parte ...
Se sto testando per:
- caratteri non validi
- e un protocollo non valido
- e URL validi
tutti nello stesso file di dati di test (e quindi nello stesso test) mi causeranno problemi in seguito? Ho letto che un test dovrebbe fallire solo per una ragione.
È quello che sto facendo OK?
Come fanno le altre persone a utilizzare i dati di test nei loro test unitari, se non del tutto?
Porca vacca. È incredibilmente utile. Questo è esattamente il tipo di consiglio che stavo cercando. Mi sentivo un po 'strano scrivere così tanto dei miei dati di convalida in un file esterno, ma non riuscivo a capire il perché. La tua risposta inchioda il mio brutto presentimento: fa male alla manutenibilità e alla velocità. Il tuo codice di esempio è anche molto utile come punto di partenza per il mio codice. Grazie. È fantastico. –