模拟 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)
所以我的问题是:
- 有没有办法模拟 MyClass 但不加载 mynativelib 或者我可以只模拟本机方法而不模拟整个 class?
您可以通过声明 @Mocked(stubOutClassInitialization = true) MyClass mock
字段或参数来模拟整个 class,同时删除静态初始值设定项。
但是,如果 class 在测试 运行 期间未初始化,则在使用 @Mocked
声明进行测试之前,这将只起作用。
我有一个 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)
所以我的问题是:
- 有没有办法模拟 MyClass 但不加载 mynativelib 或者我可以只模拟本机方法而不模拟整个 class?
您可以通过声明 @Mocked(stubOutClassInitialization = true) MyClass mock
字段或参数来模拟整个 class,同时删除静态初始值设定项。
但是,如果 class 在测试 运行 期间未初始化,则在使用 @Mocked
声明进行测试之前,这将只起作用。