La domanda è: test di unità o test di integrazione?
Se si esegue il test delle unità, suggerirei di usare le mock alla vecchia maniera, utilizzando un setter e cercando di testare il codice Java senza il framework di dipendenze dell'iniezione. Questo metterà alla prova la tua classe in modo isolato e sottrae molta complessità.
quello che voglio dire:
public class Test{
ClassInTest inTest;
MyInterface myInterface;
@Before
public void setup(){
inTest = new ClassInTest();
//or your favorite mocking frameowrk
myInterface = EasyMock.createMock(MyInterface.class);
inTest.setMyInterface(myInterface);
}
@Test
public void testMethod(){
//...mocking test code
}
}
Naturalmente, testando Android Attività (e altre estensioni di Android) è difficile a causa dell'eccezione gettare mozziconi e classi/metodi finali. È qui che Robolectric è utile (e altamente consigliato) per creare un'istanza/ombreggiamento dell'API Android.
Se si sta eseguendo un test di integrazione, si consiglia di adottare un altro approccio. Personalmente, proverei a non deridere durante i test di integrazione mentre provo a testare l'applicazione come se fosse in produzione. Ma, se vuoi davvero prendere in giro, potresti usare un approccio simile al test delle unità e introdurre una simulazione dopo aver alzato la tua classe di attività generata. Vale la pena notare, è possibile eseguire test di integrazione direttamente sull'hardware utilizzando framework come Robotium.
Altro per la tua domanda, non sono a conoscenza di alcuna infrastruttura di AndroidAnnotation specificatamente per l'iniezione di Mock o l'introduzione di Mock nell'albero delle dipendenze iniettato di un'applicazione.
fonte
2012-05-14 16:14:05
Stai cercando di testare la tua classe o la classe generata da AndroidAnnotations? –
Voglio testare una classe che scrivo. Voglio iniettare mock nella classe che scrivo per il codice di test e iniettare oggetti "reali" per la produzione. – apollodude217