Convenzione di denominazione per i pacchetti di test

7

In realtà chiamiamo i nostri pacchetti di test esattamente come le loro controparti testate. Quindi finiamo con questa struttura:

src/main/java
    com.hello.world
        helloWorld.java
src/test/java
    com.hello.world
        helloWorldTest.java

Ho sempre pensato che non fosse abbastanza intelligente, dal momento che non è possibile distinguere tra "test" e "to-test" se viene fornito solo il nome del pacchetto. D'altra parte non ho davvero trovato un caso in cui ciò sia importante in qualche modo. È una buona pratica avere le stesse convenzioni di denominazione per entrambi i pacchetti (per i casi di test e le classi di origine)? In caso contrario, quale sarebbe un approccio migliore?

    
posta OddDev 19.08.2016 - 11:15
fonte

1 risposta

6

Questa è una buona convenzione.

A volte vuoi scrivere anche unit test per classi e metodi privati del pacchetto. Non sarai in grado di chiamarli da una classe di test dell'unità collocata in un altro pacchetto.

Non dovrebbe esserci confusione circa l'avere classi di test unitarie nello stesso spazio dei nomi che non dovrebbero trovarsi nel percorso della classe durante la compilazione o l'esecuzione del codice di produzione.

Ecco un esempio di un piccolo modulo con un'interfaccia pubblica, una classe factory pubblica e due classi di implementazione private del pacchetto:

src/main/java:
    com.hello.transmogrifier
        public interface Transmogrifier
        public class TransmogrifierFactory
        class MapTransmogrifier implements Transmogrifier
        class ListTransmogrifier implements Transmogrifier

scr/test/java:
    com.hello.transmogrifier
        public class TransmogrifierFactoryTest
        public class MapTransmogrifierTest
        public class ListTransmogrifierTest

Nascondere le implementazioni dell'interfaccia Transmogrifier potrebbe essere una valida scelta progettuale. Forse è responsabilità della classe factory scegliere l'implementazione.

Poiché le implementazioni sono private del pacchetto, è necessario posizionare le classi di test dell'unità nello stesso pacchetto se si desidera testarle direttamente. Se hai classi di test unitarie in qualche altro pacchetto, dai tuoi test hai solo accesso diretto all'interfaccia pubblica e alla classe factory.

    
risposta data 19.08.2016 - 14:42
fonte

Leggi altre domande sui tag