本文介绍了Robolectric坦克上加载JNI库的应用程序对象。我可以得到一个解决方法吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的Android应用程序在应用程序
对象加载JNI库,并Robolectric似乎不喜欢这样。当我去运行我的测试Robolectric胡扯了,我得到这个堆栈跟踪:
我不完全相信我能做些什么这个问题。一个解决办法的任何想法?
解决方案
解决方案适用于Robolectric 1.2,而不是2 +
感谢扬伯克尔在这里回答这个: https://groups.google.com/d/msg/robolectric/beW9XjT8E1A/pJQrRaybN30J
类MyJniClass {
静态{
尝试 {
的System.loadLibrary(LIBNAME);
}赶上(的UnsatisfiedLinkError E){
//只有忽略例外非Android ENV
如果(Dalvik的.equals(System.getProperty(java.vm.name)))掷Ë;
}
}
}
公共类MyTestRunner扩展RobolectricTestRunner {
公共MyTestRunner(类TestClass中)抛出InitializationError {
//删除本地通话+替换阴影
addClassOrPackageToInstrument(com.example.jni.MyJniClass);
}
保护无效bindShadowClasses(){
//绑定阴影JNI类
}
}
The Application
object for my Android app loads a JNI library, and Robolectric doesn't seem to like that. When I go to run my tests Robolectric craps out and I get this stack trace:
I'm not exactly sure what I can do about this. Any ideas on a workaround?
解决方案
Solution works for Robolectric 1.2, not 2.+
Thanks to Jan Berkel for answering this here:https://groups.google.com/d/msg/robolectric/beW9XjT8E1A/pJQrRaybN30J
class MyJniClass {
static {
try {
System.loadLibrary("libname");
} catch (UnsatisfiedLinkError e) {
// only ignore exception in non-android env
if ("Dalvik".equals(System.getProperty("java.vm.name"))) throw e;
}
}
}
public class MyTestRunner extends RobolectricTestRunner {
public MyTestRunner(Class testClass) throws InitializationError {
// remove native calls + replace with shadows
addClassOrPackageToInstrument("com.example.jni.MyJniClass");
}
protected void bindShadowClasses() {
// bind shadow JNI classes
}
}
这篇关于Robolectric坦克上加载JNI库的应用程序对象。我可以得到一个解决方法吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!