JUnit UnsatisfiedLinkError: android.util.Log.isLoggable(Ljava/lang/String;
JUnit UnsatisfiedLinkError: android.util.Log.isLoggable(Ljava/lang/String;
当我 运行 在使用 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: {
这是失败轨迹
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)
运行对 Android 个项目进行 JUnit 测试。
在 android 中 运行 junit test 的唯一区别是您将调用 运行 As > Android JUnit Test 而不是像您一样只是 JUnit Test习惯于 java.
就这些!希望你喜欢!
我遇到了同样的问题,请尝试在您的测试中扩展 AndroidTestCase class。该错误是由于 classes 只能在 android 运行时 (Device\Emulator)
上找到
令人沮丧,但您必须使用 RobolectricTestRunner 而不是标准的 JUnit。
isLoggable 是一种本机方法,因此它在运行时不可用。
如果你使用Volley或者apachehttp-client,最大的问题是isLoggable被调用为字段实例化,例如:
private static final DEBUG = Log.isLoggable(..);
考虑到此方法在运行时在那些 库 中根本不可用,这完全搞砸了,所以即使 AndroidTestCase
也无法拯救你。
幸运的是,Robolectric 处理得很好。
编辑 2017 年 4 月 4 日
JUnit 5 现已可用,我尚未使用此测试运行器进行测试。
对我来说,它发生在 运行 对 kotest
进行特定测试时。我不得不 运行 一次完成所有测试,而不是一项一项地进行。
当我 运行 在使用 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: {
这是失败轨迹
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)
运行对 Android 个项目进行 JUnit 测试。
在 android 中 运行 junit test 的唯一区别是您将调用 运行 As > Android JUnit Test 而不是像您一样只是 JUnit Test习惯于 java.
就这些!希望你喜欢!
我遇到了同样的问题,请尝试在您的测试中扩展 AndroidTestCase class。该错误是由于 classes 只能在 android 运行时 (Device\Emulator)
上找到令人沮丧,但您必须使用 RobolectricTestRunner 而不是标准的 JUnit。
isLoggable 是一种本机方法,因此它在运行时不可用。
如果你使用Volley或者apachehttp-client,最大的问题是isLoggable被调用为字段实例化,例如:
private static final DEBUG = Log.isLoggable(..);
考虑到此方法在运行时在那些 库 中根本不可用,这完全搞砸了,所以即使 AndroidTestCase
也无法拯救你。
幸运的是,Robolectric 处理得很好。
编辑 2017 年 4 月 4 日
JUnit 5 现已可用,我尚未使用此测试运行器进行测试。
对我来说,它发生在 运行 对 kotest
进行特定测试时。我不得不 运行 一次完成所有测试,而不是一项一项地进行。