模拟一个类有加载本机库

时间:2015-03-20 04:04:13

标签: java mocking java-native-interface jmockit

我有一个使用原生方法的课程:

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

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

mynativelib是在big endian机器上运行的,但是那些单元测试是在我的linux PC上运行的,这是小端机器,所以我在运行那些单元测试时遇到了错误的错误:

  

错误的ELF类:ELFCLASS32(可能的原因:字节顺序不匹配)

所以我的问题是:

  • 有没有办法模拟MyClass但是没有加载mynativelib或者我可以只模拟本机方法,而不是模拟整个类?

1 个答案:

答案 0 :(得分:0)

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

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