模拟 class 已加载本机库

Mock a class have load native lib

我有一个 class 本地方法:

public class MyClass
{
    public static native boolean NativeMethod();
    static
    {
       System.loadLibrary("mynativelib");
    }
}

我正在为我的项目编写单元测试,一些测试用例调用了这个本机方法。目前我使用 jmockit 来模拟 MyClass。

mynativelib 在 big endian 机器上构建为 运行,但是那些单元测试在我的 linux PC 上是 运行,它是 little endian 机器,所以当我得到 fowllowing 错误时运行那些单元测试:

wrong ELF class : ELFCLASS32 (Possible cause : endianness mismatch)

所以我的问题是:

您可以通过声明 @Mocked(stubOutClassInitialization = true) MyClass mock 字段或参数来模拟整个 class,同时删除静态初始值设定项。

但是,如果 class 在测试 运行 期间未初始化,则在使用 @Mocked 声明进行测试之前,这将只起作用。