Unë kam një test të thjeshtë duke përdorur një activityTestRule
që duhet të kontrollojë nëse një metodë e aktivitetit nën test është quajtur:
@Test
public void callLiveLocation() {
MapSettingsActivity spy = spy(activityRule.getActivity());
doNothing().when(spy).setLiveLocation();
onView(withId(R.id.btn_map_current_location)).perform(click());
verify(spy).setLiveLocation();
}
Metoda setLiveLocation()
thirret kur kontrolloj në modalitetin e korrigjimit.
Megjithatë, konsola më thotë:
Kërkohet por nuk thirret: mapSettingsActivity.setLiveLocation(); -> në com.android.dx.mockito.InvocationHandlerAdapter.invoke(InvocationHandlerAdapter.java:53) Në fakt, nuk kishte asnjë ndërveprim me këtë tallje.
Si mund të kontrolloj nëse është thirrur metoda e aktivitetit nën testim?
Unë përdor lidhjen e të dhënave të Android për klikimin e butonit, i cili thërret një kthim kthimi, i cili nga ana tjetër thërret një metodë në aktivitetin nën testim.
Shënim:
Metoda është një metodë e thjeshtë për aktivitetin:
public void setLiveLocation() {
super.startLocationListener();
}
Redakto:
Vura re se krijimi i spiunit kthehet i pavlefshëm për një arsye ende të panjohur:
MapSettingsActivity spy = spy(activityRule.getActivity());