2010-10-28 140 views
0

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

但是,运行我的测试中,我得到了以下错误时:

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

这是一个错误?或者我只是想念一些东西?

回答

0

是否有可能使用库的版本1.1?我只是修复了一个bug,以使Apache在1.2版本中成为默认设置。所以,如果你使用的是1.1版本,请尝试切换到1.2,如果这样不能解决错误,请通知我。

声明:我是google-api-java-client图书馆的所有者。

+0

这是1.2恐怕 - 我只下载并开始使用它今天。尽管如此,尽管喜欢 - 现在的问题放在一边! – 2010-10-28 15:11:33

+0

我假设(也许不正确),它正在测试上下文中运行它。不幸的是,我的应用程序还不够完善,因此我只能在Android中单独使用代码。 – 2010-10-28 15:13:30

+0

任何想法?它看起来好像该错误没有完全解决......我再次检查 - 绝对使用1.2 – 2010-10-28 18:18:12

1

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

它正确地确定我的环境(所以这与单元测试无关),但是然后未能加载其他类。

通过添加Apache客户端,重新打包和逃逸罐子我能够解决这个问题。我会建议这可能可以改进。

+0

这是正确的。我会尝试改进错误消息以帮助解决问题。感谢您的反馈。 – 2010-11-13 14:35:43