RequestQueue测试失败,并出现java.lang.NoClassDefFoundError:org / apache / http / StatusLine

时间:2019-02-24 17:36:00

标签: android http gradle client robolectric

我已基于Android google文档在单例类中创建了一个简单的RequestQueue。

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错误。我尝试在gradle.build中添加http客户端依赖项:

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

这可以使测试成功完成,但是,我在build.gradle中收到一条错误消息,指出“ httpclient定义的类与Android现在提供的类冲突。”

有什么想法吗?

0 个答案:

没有答案