【问题标题】:Problem with LowLevelHttpTransport in unit tests单元测试中的 LowLevelHttpTransport 问题
【发布时间】:2011-05-01 19:34:35
【问题描述】:

我目前正在尝试在一个使用 HTTPtransport 并且是 Android 应用程序的一部分的类上运行一些单元测试。 google-api 的文档说这应该没问题,因为 Apache 传输是内置在 Android 中的。

但是,在运行我的测试时,我收到以下错误:

java.lang.IllegalStateException: 无法加载 NetHttpTrasnport com.google.api.client.http.HttpTransport.useLowLevelHttpTransport(HttpTransport.java:98) 在 com.google.api.client.http.HttpTransport.(HttpTransport.java:156) 在 com.google.api.client.googleapis.GoogleTransport.create(GoogleTransport.java:58) 在 uk.co.redfruit.android.whogotwhat.googlebase.GoogleBaseSearch.search(GoogleBaseSearch.java:41) 在 uk.co.redfruit.android.whogotwhat.test.GoogleBaseSearchTest.testSearchForBarcode(GoogleBaseSearchTest.java:22) 在 java.lang.reflect.Method.invokeNative(Native 方法)在 android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) 在 android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) 在 android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:430) 在 android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)

这是一个错误吗?还是我只是错过了什么?

【问题讨论】:

    标签: android junit google-api


    【解决方案1】:

    好的 - 我找到了问题所在。由于您尝试确定所处环境的方式(使用 class.forName() 并捕获异常),所有类路径错误都会导致此失败 - 这可能会产生误导。

    它正确地确定了我的环境(所以这与单元测试无关),但随后无法加载其他一些类。

    通过添加 apache 客户端、重新打包和转义 jar,我能够解决问题。我建议这也许可以改进。

    【讨论】:

    • 这是正确的。我将尝试改进错误消息以帮助进行故障排除。感谢您的反馈。
    【解决方案2】:

    您使用的是 1.1 版的库吗?我刚刚修复了bug 以使 Apache 传输成为 1.2 版中的默认值。因此,如果您使用的是 1.1 版,请尝试切换到 1.2,如果不能解决错误,请告诉我。

    免责声明:我是google-api-java-client 库的所有者。

    【讨论】:

    • 恐怕是1.2 - 我今天才下载并开始使用它。到目前为止还挺喜欢的——抛开当前的问题!
    • 我假设(可能是错误的)它与在测试环境中运行有关。不幸的是,我的应用还不够完整,无法在 Android 中单独尝试代码。
    • 有什么想法吗?看起来该错误似乎没有完全解决......我再次检查过 - 肯定使用 1.2
    猜你喜欢
    • 1970-01-01
    • 2012-12-01
    • 2012-07-09
    • 2011-10-28
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多