测试适用于 Android 的 Google IoT Core 客户端

大卫·施奈德

具有以下单元测试的 Android Things 项目失败:

import com.google.android.things.iotcore.IotCoreClient;
import org.junit.Test;

public class ExampleUnitTest {

    @Test
    public void clientTest() {
        new IotCoreClient.Builder();
    }
}

build.gradle 依赖项:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    compileOnly 'com.google.android.things:androidthings:1.0'
    implementation 'com.google.android.things:cloud-iot-core:1.0.0'
    testImplementation 'com.google.android.things:cloud-iot-core:1.0.0'
}

错误输出:

java.lang.VerifyError: Expecting a stackmap frame at branch target 36
Exception Details:
  Location:
    com/google/android/things/iotcore/IotCoreClient$Builder.build()Lcom/google/android/things/iotcore/IotCoreClient; @22: ifnonnull
  Reason:
    Expected stackmap frame at this location.
  Bytecode:
    0000000: 2ab4 0013 1203 b800 1e2a b400 1412 06b8
    0000010: 001e 2ab4 0015 c700 0e2a bb00 0959 b700
    0000020: 1ab5 0015 2ab4 0017 c600 112a b400 16c7
    0000030: 000a 2ab8 001f b500 162a b400 19c6 0011
    0000040: 2ab4 0018 c700 0a2a b800 1fb5 0018 bb00
    0000050: 1059 2ab4 0013 b600 1b2a b400 13b6 001c
    0000060: bb00 1259 b700 23b7 0022 4ca7 000d 4cbb
    0000070: 000e 592b b700 20bf bb00 0b59 2ab4 0013
    0000080: 2ab4 0014 2b2a b400 152a b400 182a b400
    0000090: 192a b400 162a b400 1703 b700 1db0     
  Exception Handler Table:
    bci [78, 107] => handler: 110

我可以在 Activity 中很好地实例化 Builder,但也想为它编写测试。有没有办法测试我的 IoT Core 连接?

这可能只是一个依赖性问题,但我没有想法。

脱线

该库在内部依赖于 Paho MQTT 客户端,该客户端不会作为其公共 API 的一部分传递给调用者(即类不通过库可见)。您看到的错误是因为IotCoreClient.Builder尝试实例化测试无法看到的内部 MQTT 客户端类。您可以在 GitHub 上找到Cloud IoT Core 客户端的源代码

除了这个特定的错误,我建议不要构建这样的测试。它会产生两个您通常希望在测试中避免的问题:

  1. 正如所写,这看起来像是验证 Cloud IoT 客户端是否正常工作的测试(换句话说,Google 的库代码是否正常工作,而不是您的代码是否正常工作)。单元测试应侧重于验证代码的行为并剔除任何依赖项的实现细节。

  2. 一直连接到 Cloud IoT 的单元测试不是密封的,因此很难提供可重复的结果。从互联网连接不良到意外设备数据等故障模式都可能导致测试错误地失败。理想情况下,您将为测试提供模拟或存根接口,您可以在其中为实际测试代码提供确定性结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用适用于Android的Youtube的Google API Java客户端从Android服务访问YouTube数据

来自分类Dev

适用于Android的Google Play服务。如果禁用WiFi,则位置客户端不会更新位置

来自分类Dev

适用于Android的Google Play服务。如果禁用wifi,则位置客户端不会更新位置

来自分类Dev

适用于Android的其余客户端日志记录

来自分类Dev

适用于Android的Socket.io客户端

来自分类Dev

生成Python客户端库-适用于Android

来自分类Dev

适用于Android的API客户端

来自分类Dev

无法创建新的客户端ID(适用于iOS SDK中的Google Plus登录)

来自分类Dev

适用于Windows Phone 8.1的Google Api任务客户端库

来自分类Dev

适用于Google云消息传递服务的xmpp ruby客户端

来自分类Dev

适用于多个客户端的Google Analytics(分析)API配额

来自分类Dev

适用于PHP的Google API客户端中的required_once问题

来自分类Dev

适用于react项目,Javascript或Node-js的Google API客户端库?

来自分类Dev

Google云存储客户端API不适用于补丁

来自分类Dev

无法创建新的客户端ID(适用于iOS SDK中的Google Plus登录)

来自分类Dev

适用于Android和Java的翻新REST客户端不会终止

来自分类Dev

是否有适用于XMPP客户端的Android本机库?

来自分类Dev

是否有适用于Android的最佳使用API客户端模式?

来自分类Dev

玩!适用于Android客户端的Framework 2 REST身份验证和授权

来自分类Dev

任何适用于Android的服务器/客户端模型?

来自分类Dev

使用适用于Python的Google API客户端库连接到Google Analytics(分析)时,发生SSLHandshakeError

来自分类Dev

适用于Windows IOT Core的MQTT代理?

来自分类Dev

远程客户端访问 Windows 10 IoT Core 时发生的事件?

来自分类Dev

适用于Python的Google Maps Engine API客户端库可创建表格资产

来自分类Dev

需要帮助,使用适用于PHP的Google API客户端库创建QPX Express请求

来自分类Dev

错误:“无法识别的参数:shell”-适用于Python的OAuth 2.0 Google API客户端

来自分类Dev

适用于Google Maps API的OVER_QUERY_LIMIT-通过PHP连接到客户端

来自分类Dev

GoogleAuthUtil.getToken Android客户端-Google Cloud端点

来自分类Dev

Android Google API客户端未连接

Related 相关文章

  1. 1

    使用适用于Android的Youtube的Google API Java客户端从Android服务访问YouTube数据

  2. 2

    适用于Android的Google Play服务。如果禁用WiFi,则位置客户端不会更新位置

  3. 3

    适用于Android的Google Play服务。如果禁用wifi,则位置客户端不会更新位置

  4. 4

    适用于Android的其余客户端日志记录

  5. 5

    适用于Android的Socket.io客户端

  6. 6

    生成Python客户端库-适用于Android

  7. 7

    适用于Android的API客户端

  8. 8

    无法创建新的客户端ID(适用于iOS SDK中的Google Plus登录)

  9. 9

    适用于Windows Phone 8.1的Google Api任务客户端库

  10. 10

    适用于Google云消息传递服务的xmpp ruby客户端

  11. 11

    适用于多个客户端的Google Analytics(分析)API配额

  12. 12

    适用于PHP的Google API客户端中的required_once问题

  13. 13

    适用于react项目,Javascript或Node-js的Google API客户端库?

  14. 14

    Google云存储客户端API不适用于补丁

  15. 15

    无法创建新的客户端ID(适用于iOS SDK中的Google Plus登录)

  16. 16

    适用于Android和Java的翻新REST客户端不会终止

  17. 17

    是否有适用于XMPP客户端的Android本机库?

  18. 18

    是否有适用于Android的最佳使用API客户端模式?

  19. 19

    玩!适用于Android客户端的Framework 2 REST身份验证和授权

  20. 20

    任何适用于Android的服务器/客户端模型?

  21. 21

    使用适用于Python的Google API客户端库连接到Google Analytics(分析)时,发生SSLHandshakeError

  22. 22

    适用于Windows IOT Core的MQTT代理?

  23. 23

    远程客户端访问 Windows 10 IoT Core 时发生的事件?

  24. 24

    适用于Python的Google Maps Engine API客户端库可创建表格资产

  25. 25

    需要帮助,使用适用于PHP的Google API客户端库创建QPX Express请求

  26. 26

    错误:“无法识别的参数:shell”-适用于Python的OAuth 2.0 Google API客户端

  27. 27

    适用于Google Maps API的OVER_QUERY_LIMIT-通过PHP连接到客户端

  28. 28

    GoogleAuthUtil.getToken Android客户端-Google Cloud端点

  29. 29

    Android Google API客户端未连接

热门标签

归档