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

Obj*_*ist 1 junit android unit-testing serial-port beagleboneblack

我知道 Android 不提供对串行端口的开箱即用的访问,除非设备已 root 或刷新了自定义 Android 版本,例如在 BeagleBone Black 板上 - 这正是我的情况。使用Android SerialPort API 项目,我可以通过示例 GUI 应用程序(稍作修改)访问和测试设备的串行端口。

不过,我还想为串行 API 添加 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)
Run Code Online (Sandbox Code Playgroud)

在我看来,serialport.so 文件在 AndroidTestCase 提供的模拟环境中未加载/可见。我正在使用 Android Studio 中“新建模块”向导创建的标准测试结构。

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

Obj*_*ist 5

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