1
Я использую Robolectric и пытаюсь создать теневой объект GoogleApiClient, но безуспешно. Методы из класса Shadow никогда не вызываются. Интерфейс GoogleApiClient - это может быть проблемой? Есть ли способ «затенять» интерфейс GoogleApiClient (или имитировать GoogleApiClient в тесте)?Создайте тень GoogleApiClient с Robolectric
Реализация:
@Implements(GoogleApiClient.class)
public class ShadowGoogleApiClient {
public void __constructor__(){
System.out.println("__constructor____constructor__");
}
@Implementation
void connect() {
System.out.println("connectconnectconnect");
}
@Implementation
boolean isConnected() {
System.out.println("isConnectedisConnected");
return false;
}
@Implementation
boolean isConnecting() {
System.out.println("isConnectingisConnecting");
return false;
}
}
и я определил класс Shadow в моем тесте:
@Config(shadows = {ShadowGoogleApiClient.class},
constants = BuildConfig.class)
@RunWith(CustomRobolectricRunner.class)
public class ApiTest {
...
}
Вы должны зарегистрировать свой класс для затенения. См. Http://stackoverflow.com/questions/29629786/robolectric-shadow-not-working – nenick
Собственно, он все еще не работает. Я добавил класс (GoogleApiClient) в InstrumentationConfiguration.Builder, но без изменений. – Zis
GoogleApiClient - это интерфейс. Не уверен, но имеет смысл, что вы можете только тени конкретных классов. Настоящий класс реализации должен отображаться при отладке приложения. Вы можете теневые классы, которые недоступны с помощью свойства className из @Implements – nenick