Сбой теста RequestQueue с java.lang.NoClassDefFoundError: org / apache / http / StatusLine - PullRequest
0 голосов
/ 24 февраля 2019

Я создал простой RequestQueue в одноэлементном классе на основе документации Google Android.

public class ApplicationSingleton {
    private static ApplicationSingleton singleton;

    private String api_token;
    private RequestQueue requestQueue;

    private ApplicationSingleton(Context context) {
        requestQueue = new RequestQueue(new DiskBasedCache(context.getCacheDir()),
                new BasicNetwork(new HurlStack()));
    }

    public static synchronized ApplicationSingleton getInstance(Context context) {
        if (singleton == null) {
            singleton = new ApplicationSingleton(context);
        }

        return singleton;
    }

    public String getApi_token() {
        return api_token;
    }

    public void setApi_token(String api_token) {
        this.api_token = api_token;
    }

    public RequestQueue getRequestQueue() {
        return requestQueue;
    }
}

Я проверяю, что мой одноэлементный класс всегда возвращает один и тот же экземпляр, используя Robolectric.

@RunWith(RobolectricTestRunner.class)
public class ApplicationSingletonTest {

    @Test
    public void SHOULD_RETURN_SAME_INSTANCE_OF_SINGLETON() {
        ApplicationSingleton applicationVars = ApplicationSingleton.getInstance(
                RuntimeEnvironment.application);

        ApplicationSingleton applicationVars2 = ApplicationSingleton.getInstance(
                RuntimeEnvironment.application);

        assertNotNull(applicationVars);
        assertNotNull(applicationVars2);
        assertEquals(applicationVars, applicationVars2);
    }
}

При каждом запуске этого теста он завершается с ошибкой java.lang.NoClassDefFoundError: org / apache / http / StatusLine.Я попытался добавить клиентскую зависимость http в мой gradle.build:

implementation group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.7'

, что позволяет успешно завершить тест, однако в моем build.gradle появляется сообщение о том, что httpclient определяет классы, конфликтующие с классамитеперь предоставляется Android. ".

Есть идеи, что происходит?

...