ja oddzielone modernizacyjny API wywołuje metody z kodem działalności i chcę zrobić test jednostki na tych metodach, jeden przykład: Interfejs:Android Test jednostki z modernizacją i Mockito
public interface LoginService {
@GET("/auth")
public void basicLogin(Callback<AuthObject> response);
}
i to jest metoda, która wykonuje wywołanie, w głównym działaniu otrzymuję obiekt przez magistralę zdarzeń.
public class AuthAPI {
private Bus bus;
LoginService loginService;
public AuthAPI(String username, String password) {
this.bus = BusProvider.getInstance().getBus();
loginService = ServiceGenerator.createService(LoginService.class,
CommonUtils.BASE_URL,
username,
password);
}
public void Login() {
loginService.basicLogin(new Callback<AuthObject>() {
@Override
public void success(AuthObject authObject, Response response) {
bus.post(authObject);
}
@Override
public void failure(RetrofitError error) {
AuthObject authObject = new AuthObject();
authObject.setError(true);
bus.post(authObject);
}
});
}
}
A oto test
@RunWith(MockitoJUnitRunner.class)
public class AuthCallTest extends TestCase {
AuthAPI authAPI;
@Mock
private LoginService mockApi;
@Captor
private ArgumentCaptor<Callback<AuthObject>> cb;
@Before
public void setUp() throws Exception {
authAPI = new AuthAPI("username", "password");
MockitoAnnotations.initMocks(this);
}
@Test
public void testLogin() throws Exception {
Mockito.verify(mockApi).basicLogin((cb.capture()));
AuthObject authObject = new AuthObject();
cb.getValue().success(authObject, null);
assertEquals(authObject.isError(), false);
}
}
kiedy uruchomić test mam ten błąd
Wanted but not invoked:
mockApi.basicLogin(<Capturing argument>);
-> at AuthCallTest.testLogin(AuthCallTest.java:42)
Actually, there were zero interactions with this mock.
Co zrobiłem źle, to doprowadza mnie do szału starałem się śledzić to przewodnik bez powodzenia: http://www.mdswanson.com/blog/2013/12/16/reliable-android-http-testing-with-retrofit-and-mockito.html
someon Pomóżcie mi :(
Problem polega na tym, że śledzisz blog, który ma ponad dwa lata. Co więcej, autor nie aktualizował swojego kodu przez dwa lata i nie jest zainteresowany. –