2017-03-07 8 views
3

Ich möchte ein Verfahren in einem Fragment testen, aber in dieser Methode nenne ich einen Toast:Wie kann ich einen Toast in JUnit-Tests ignorieren?

Toast.makeText(getActivity(), getString(R.string.signs), Toast.LENGTH_SHORT).show(); 

Jetzt möchte ich die Methode mit JUnit und Powermockito testen. Dafür möchte ich den Toast ignorieren. Ich habe versucht, es wie folgt aus: den Toast verspotten und ignor toast.show()

Toast toastMock = mock(Toast.class); 
doReturn(toastMock).when(Toast.makeText(any(Activity.class), anyString(), Toast.LENGTH_SHORT)); 
doNothing().when(toastMock).show(); 

Aber ich bekomme immer eine Runtime, weil ich Toast aufrufen, ohne ein neues Toast Objekt zu schaffen. Wie kann ich dieses Problem umgehen?

+0

können Sie einen vollständigen Testfall hinzufügen? mit PowerMockito Setup auch –

+0

Sie versuchen, eine statische Methode zu verspotten, müssen Sie entweder den statischen Aufruf in eine nicht statische Klasse, die Sie dann verspotten können, oder verspotten die statische Methode, für die Sie hier Hilfe finden können http://stackoverflow.com/questions/10583202/powermockito-mock-single-static-method-and-return-object – zsmb13

Antwort

0

Schreiben Sie externe Klasse mit Methode verantwortlich für die Anzeige Toast, injizieren Sie es an eine fragment und mock dieses Klassenverhalten. Es könnte eine statische Methode sein, wie Sie PowerMockito verwenden.

Wie injizieren? Verwenden Sie Dagger oder Toothpick.

Verwandte Themen