Ho iniziato davvero a utilizzare TDD e ho iniziato a utilizzare mockito in jUnit per migliorare la mia capacità di testare il codice. Sto davvero amando il mockito!chiama il metodo statico sul parametro senza istanziare la classe nell'argomento
Ho notato che devo cambiare il mio modo di pensare di codifica, come passare i collaboratori, per quanto possibile in metodi e limitando il lavoro svolto nei costruttori, ove possibile.
Il seguente scenario ha giustificato alcuni consigli degli esperti qui su SO.
Supponiamo che abbia un metodo, che chiamerà alcuni metodi statici su una determinata classe. PER ESEMPIO.
public void method(){
OtherClass.staticMethod();
}
Questo è generalmente cattivo, ma è necessario nel mio scenario. Per rendere il codice più testabile nei miei test di unità vorrei evitare la dipendenza da OtherClass e passarlo come argomento.
Questo non funziona in quanto genera un errore in fase di compilazione.
public void method(Class<? extends OtherClass> util){
util.staticMethod();
}
...
method(OtherClass.class);
Questo potrebbe funzionare, ma non mi piace l'OtherClass un'istanza se non devo, in quanto è solo una classe di utilità statico come metodi:
public void method(OtherClass util){
util.staticMethod();
}
...
method(new OtherClass());
La mia domanda a voi : Esiste un modo migliore, più preferibile, per eseguire ciò senza utilizzare la nuova parola chiave?
Domanda molto ben formattata per un nuovo utente, congratulazioni :) – MarioDS
Non sono sicuro se il tuo ultimo codice verrà comunicato se passi un'istanza di una sottoclasse di 'OtherClass'. L'accesso ai metodi statici tramite un'istanza mi sembra fonte di confusione in quanto ** non è correlato a quell'istanza **, e potrebbe non funzionare nel modo in cui si pensa che sarebbe. –
BTW, utilizzare ** Pattern Singleton ** invece di metodi statici nel tuo caso? –