2016-05-08 13 views
6

Come ascolto il metodo ActivityTestRule'sbeforeActivityLaunched() in un test di Android.Come ascoltare il metodo beforeActivityLaunch di Android ActivityTestRule in un test Android

La mia soluzione alternativa è la creazione di una ActivityTestRule personalizzata e la concessione di un callback sul costruttore. È una cattiva pratica? Allo stesso modo è OK ascoltare il metodo del costruttore ActivityTestRule.

Ecco il mio codice:

public class CustomActivityTestRule<A extends Activity> extends ActivityTestRule<A> { 

    public interface onBeforeListener{ 
     void onBefore(String message); 
    } 

    private onBeforeListener listener; 

    public CustomActivityTestRule(Class<A> activityClass, onBeforeListener listener) { 
     super(activityClass); 
    } 

    @Override 
    protected void beforeActivityLaunched() { 
     super.beforeActivityLaunched(); 
     listener.onBefore("before activity launch"); 
    } 
} 

Nella classe di test Android, posso fare qualcosa di simile:

@Rule public CustomActivityTestRule<MainActivity> mainActivityActivityTestRule = new 
      CustomActivityTestRule<MainActivity>(MainActivity.class, new CustomActivityTestRule.onBeforeListener() { 
     @Override 
     public void onBefore(String message) { 
      //do something before activity starts 
     } 
    }); 

stesso modo è in grado di fare qualcosa sulla regola JUnit creare un'istanza. C'è un altro modo per ascoltare la creazione di istanze di test di junit?

risposta

5

È possibile eseguire l'override di beforeActivityLaunched senza la creazione di una nuova classe.

sto utilizzando la seguente nel mio test:

@Rule 
public ActivityTestRule<MainActivity> mainActivityActivityTestRule = new ActivityTestRule<MainActivity>(MainActivity.class) { 

    @Override 
    protected void beforeActivityLaunched() { 
     super.beforeActivityLaunched(); 
    } 

}; 
2

È possibile configurare la regola di prova in modo che non si avvia automaticamente la vostra attività.

@Rule 
public ActivityTestRule<MainActivity> activityTestRule = new ActivityTestRule<MainActivity>(MainActivity.class, false, false); 

Nel metodo di installazione è possibile preparare tutto ciò che è necessario e quindi avviare l'attività.

activityTestRule.launchActivity(null); 

Vedi anche

Problemi correlati