我已基于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现在提供的类冲突。”
有什么想法吗?