Pip*_*Pip 7 java junit android apache-httpclient-4.x
当我在使用apachehttp-client的Android应用程序上运行JUnit测试时,我收到以下错误.该应用程序在我的测试设备和模拟器上成功运行.登录JUnit测试也会通过,但只要应用程序尝试使用apachehttp-client从服务器读取数据,其余的JUnit测试就会失败.
该测试似乎在httpClient.execute失败
try {
URL businessPartnersResource = new URL(
session.getServer().getUrl(), "BusinessPartners");
HttpGet request = new HttpGet(businessPartnersResource.toURI());
session.attachToRequest(request);
HttpClient httpClient = HttpClientFactory.getClient();
HttpResponse response = httpClient.execute(request);
int status = response.getStatusLine().getStatusCode();
switch (status) {
case HttpsURLConnection.HTTP_OK: {
Run Code Online (Sandbox Code Playgroud)
这是失败追踪
java.lang.UnsatisfiedLinkError: android.util.Log.isLoggable(Ljava/lang/String;I)Z
at android.util.Log.isLoggable(Native Method)
at org.apache.http.client.protocol.RequestClientConnControl.process(RequestClientConnControl.java:76)
at org.apache.http.protocol.BasicHttpProcessor.process(BasicHttpProcessor.java:251)
at org.apache.http.protocol.HttpRequestExecutor.preProcess(HttpRequestExecutor.java:168)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:458)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:576)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:554)
Run Code Online (Sandbox Code Playgroud)
令人沮丧,但你必须使用RobolectricTestRunner而不是标准的JUnit.
isLoggable是一种本机方法,因此在运行时不可用.
如果您使用Volley或apachehttp-client,最大的问题是isLoggable被称为字段实例化,例如:
private static final DEBUG = Log.isLoggable(..);
鉴于此方法在运行时根本无法在这些库中提供,因此这完全会让事情变得混乱,所以即使是AndroidTestCase
无法保存的也是如此.
幸运的是,Robolectric完美地处理它.
编辑2017年4月4日
JUnit 5现已上市,我还没有测试过这个测试人员.
归档时间: |
|
查看次数: |
3065 次 |
最近记录: |