Test doppio: vanno in "pacchetti sorgente" o "pacchetti di test"?

1

Ho un paio di oggetti di accesso ai dati (DefaultPersonServices.class, DefaultAddressServices.class) che è responsabile di varie operazioni CRUD in un database.

Alcune classi usano questi servizi, ma poiché i servizi richiedono che venga stabilita una connessione con un database, non posso davvero usarli nei test unitari perché richiedono troppo tempo. Pertanto, mi piacerebbe creare un doppio di test per loro e semplicemente fare implementazioni FakePersonServices.class e FakeAddressService.class che posso usare durante i test.

Ora, questo è tutto ok (presumo) ... ma la mia domanda riguarda il punto in cui ho raddoppiato il test. Dovrei tenerli insieme alle implementazioni predefinite (ovvero implementazioni "reali") o dovrei tenerle in un pacchetto di test corrispondente.

Le implementazioni predefinite si trovano in Pacchetti sorgente: com.company.data.services . Dovrei mantenere il test raddoppiato anche qui, o il test dovrebbe raddoppiare piuttosto in Pacchetti di test: com.company.data.services ?

    
posta sbrattla 20.10.2013 - 21:46
fonte

1 risposta

3

A meno che non vengano effettivamente utilizzati da qualcosa di diverso dai test, allora appartengono al pacchetto di test.

Forse potresti desiderare che entrino in un pacchetto separato "oggetti test" se pubblichi i tuoi "pacchetti sorgente" e vuoi che altre persone possano scrivere test unitari incorporandoli, ma a meno che tu non sappia che questo è il caso, direi YAGNI.

FWIW: C'è una sola istanza nel mio passato in cui includo effettivamente i falsi nel codice sorgente principale, e cioè quando il sito è stato effettivamente progettato per essere in grado di essere eseguito in "modalità demo" senza un database sottostante. Come puoi probabilmente intuire, questi erano veri falsi, non solo mozziconi o manichini, e il loro mantenimento era considerevole. Pochissimi progetti ne hanno bisogno, ma lo sottolineo comunque per completezza.

    
risposta data 20.10.2013 - 22:52
fonte

Leggi altre domande sui tag