2015-05-11 12 views
7

Sto lavorando a un progetto in cui stiamo attualmente facendo test con JUnit e Mockito. Ora sto cercando di scoprire quali sarebbero gli effetti collaterali dell'aggiunta di PowerMock al mix.Perché non PowerMock

Quali sono i suoi svantaggi, eventuali dipendenze dovrei sapere, eventuali problemi di stabilità?

Ho visto supporta Java 8. Ci sono problemi lì? Da quello che ho letto, ottenere supporto per Java 7 è stata una lunga strada.

EDIT: Immagino una serie di domande che riassumere il tutto sarebbe:

quali sarebbero le ragioni di non usare PowerMock?

+0

Puoi essere un po 'più specifico in che modo temere che PowerMock potrebbe non essere affidabile? –

+0

Inoltre, limita la quantità di domande a uno, o almeno a un concetto, così com'è ora, il post ricade esattamente nella categoria ["non chiaro cosa stai chiedendo"] (http://stackoverflow.com/ aiutare/chiuso le domande). –

+0

Spero che ora sia un po 'più chiaro. E dice anche nella loro homepage "Metterlo nelle mani degli sviluppatori più giovani potrebbe causare più danni che benefici". – KKO

risposta

27

In genere se si avvia un nuovo progetto e si (si desidera/è forzato) l'uso di PowerMock a causa dell'architettura del codice, significa che questa architettura è danneggiata e deve essere migliorata. Power Mock ti dà accesso a simulazioni di metodi statici, costruttori ecc. E questo significa che il tuo codice non segue i migliori principi di programmazione.

Power Mock deve essere utilizzato in applicazioni legacy in cui non è possibile modificare il codice che è stato dato a voi. Spesso tale codice non ha test di unità/integrazione e anche piccole modifiche possono causare errori nell'applicazione.

+2

Questa è la risposta più appropriata. Power Mock è uno strumento (molto utile) specialistico per rendere testabile il codice legacy, puzzolente o altrimenti "difficile" (un buon esempio che non è un codice, l'odore sarebbe beffardo delle classi 'finali'), usandolo ampiamente in un codice sviluppato attivamente la base potrebbe essere un segno di un problema. –

+0

Ok, capisco che powermock dovrebbe essere usato solo per il codice legacy e non per nuovi progetti. Quello che non capisco è il "perché"? Si verificano problemi se lo si utilizza su nuovi progetti?A volte ci possono essere classi statiche, forse anche definitive, che devono essere testate, giusto? – KKO

+0

Riguarda principalmente la progettazione del codice. Il codice bello e pulito non richiede di avere metodi statici che sono difficilmente testabili. Oltre a utilizzarli, si utilizzano servizi leggeri e poco accoppiati. Vedi http://stackoverflow.com/questions/871434/java-utility-class-vs-service. Ma ovviamente dipende da cosa vuoi ottenere nel tuo sistema. – wsl