Ho trovato diverse convenzioni per i test delle unità di pulizia in un progetto e Non sono sicuro quale approccio sarebbe adatto per il nostro prossimo progetto PHP. Sono cercando di trovare la migliore convenzione per incoraggiare lo sviluppo facile e l'accessibilità dei test durante la revisione del codice sorgente. Sarei molto interessato a vostra esperienza/parere per quanto riguarda ciascuno:Dove metti il tuo test unitario?
- Una cartella per il codice produttivo, un altro per i test unitari: Questo separa test di unità dai file di logica del progetto. Questa separazione delle preoccupazioni di è tanto più fastidiosa quanto un vantaggio: qualcuno che verifichi il codice sorgente del progetto, così suppongo, esaminerà l'implementazione oi test di unità (o più comunemente: solo l'implementazione ). Il vantaggio dei test unitari è un altro punto di vista per le classi è perso - questi due punti di vista sono solo troppo distanti IMO.
- metodi annotati prova: Qualsiasi moderno quadro unit testing So permette agli sviluppatori di creare metodi di prova dedicati, indicandoli (@test) e incorporandoli nel codice di progetto. Il grosso inconveniente che vedo qui è che i file di progetto si ingombrano. Anche se questi metodi sono separati utilizzando un'intestazione di commento (come TEST UNITÀ sotto questa riga), basta gonfiare la classe inutilmente.
- file di prova all'interno delle stesse cartelle come i file di implementazione: Il nostro file convenzione di denominazione impone che i file PHP contenenti classi (una classe per file) devono terminare con .class.php. Potrei immaginare che mettere le prove di unità per un file di classe in un altro che termina con .test.php rendere i test molto più presenti agli altri sviluppatori senza contaminare la classe . Anche se alleggerisce le cartelle di progetto, invece dei file di implementazione , questo è il mio preferito finora, ma ho i miei dubbi: I penserebbe che altri lo abbiano già fatto e scartato questa opzione per qualche motivo (ad es. non hanno visto un progetto Java con i file Foo.java e FooTest.java all'interno della stessa cartella.) Forse è perché gli sviluppatori Java fanno uso pesante di IDE che permettono loro un più facile accesso ai i test, mentre in PHP non sono emersi grandi editor (come eclipse per java) - molti sviluppatori che conosco usano vim/emacs o editor simili con il piccolo supporto per lo sviluppo PHP di per sé.
Qual è la vostra esperienza con uno di questi posizionamenti di test di unità? Hai un'altra convenzione che non ho elencato qui? O sto semplicemente sopravvalutando l'accessibilità ai test del unit test?