代码之家  ›  专栏  ›  技术社区  ›  Objectist

如何在Android上对Java串行端口进行单元测试

  •  1
  • Objectist  · 技术社区  · 9 年前

    我知道,除非设备是根设备,或者在BeagleBone Black板上闪存了自定义的Android版本,否则Android不会提供对串行端口的开箱即用访问,这正是我的情况。 使用 Android SerialPort API project 我能够通过示例GUI应用程序(略有修改)访问和测试设备的串行端口。

    然而,我还想为SerialAPI添加JUnit测试,因为我将把它扩展为客户端程序员使用的库模块。我尝试使用AndroidTestCase,但收到错误:

    java.lang.UnsatisfiedLinkError: Native method not found:  
    com.XXX.android.serialport_api.SerialPort.open:  
    (Ljava/lang/String;II)Ljava/io/FileDescriptor;
    at com.XXX.android.serialport_api.SerialPort.open(Native 
    Method)
    at com.XXX.android.serialport_api.SerialPort.<init    
    (SerialPort.java:32)
    

    在我看来是串行端口。因此文件在AndroidTestCase提供的模拟环境中不加载/不可见。 我使用的是AndroidStudio中“新建模块”向导创建的标准测试结构。

    任何建议或提示都将不胜感激,因为我对该主题的搜索没有结果。如果需要,我很乐意提供测试类和实现(尽管实现与上面引用的开源示例中的SerialPort.java类几乎相同)。

    1 回复  |  直到 9 年前
        1
  •  4
  •   Objectist    9 年前

    我发现了问题。包名在预编译的.so文件中进行硬编码。因此,不要使用像com.XXX这样的自定义包名。XXX必须将SerialPort(和其他实现类)直接放在/java文件夹下的顶级包中。包名应该完全是android_serialport_api——就像库示例中那样。