首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >junit4测试本机方法

junit4测试本机方法
EN

Stack Overflow用户
提问于 2014-10-29 21:45:17
回答 1查看 66关注 0票数 0

我使用jni调用.so (共享库)。

在执行环境中,所有工作都很好。

但是我想在它们上添加一些单元测试。

我有一个依赖于libUtil_Cade.so的libCBareme.so

我使用带有surefire插件的maven2.2.1,并在pom.xml文件中添加:

代码语言:javascript
复制
 <configuration>
             <forkMode>once</forkMode>
             <workingDirectory>target</workingDirectory>
             <argLine>-Djava.library.path=${project.basedir}/src/test/resources/om_lib/</argLine>
 </configuration>

我添加了System.out.println(System.getProperty("java.library.path"));,path是ok的,你可以在下一个日志中看到。

但当我启动测试时,我会得到:

代码语言:javascript
复制
TrtBaremeTest  Time elapsed: 3.032 sec  <<< ERROR!
java.lang.UnsatisfiedLinkError: /data/tmp/pam/workspace/CTR_SCA/OutilsMetier/src/test/resources/om_lib/libCBareme.so: libUtil_CADE.so: cannot open shared object file: No such file or directory

在这个目录中,我有

ls /data/tmp/pam/workspace/CTR_SCA/OutilsMetier/src/test/resources/om_lib/*.so /data/tmp/pam/workspace/CTR_SCA/OutilsMetier/src/test/resources/om_lib/libCBareme.so /data/tmp/pam/workspace/CTR_SCA/OutilsMetier/src/test/resources/om_lib/libUtil_CADE.so

为什么我的单元测试显示为cannot open shared object file

我不会在%JAVA_HOME%\bin中添加.so,因为它是单元测试,所以我不想依赖于平台。

有人有办法解决这个问题吗?

非常感谢

EN

回答 1

Stack Overflow用户

发布于 2014-10-29 22:14:46

我只想试试这个:

代码语言:javascript
复制
     <configuration>
           <forkMode>once</forkMode>
           <workingDirectory>target</workingDirectory>
           <environmentVariables>
               <LD_LIBRARY_PATH>${project.basedir}/src/test/resources/om_lib/</LD_LIBRARY_PATH>
            </environmentVariables>
     </configuration>

而且它似乎起作用了!

但在windows上它不起作用,我看到我需要用路径替换LD_LIBRARY_PATH,如下所示:

代码语言:javascript
复制
  <configuration>
           <forkMode>once</forkMode>
           <workingDirectory>target</workingDirectory>
           <environmentVariables>
               <PATH>${project.basedir}/src/test/resources/om_lib/</PATH>
            </environmentVariables>
     </configuration>

在调试模式下,我看到正在设置环境变量PATH=d:\MarcoPolo\SVN\CASTOR_trunk\CTR_SCA\OutilsMetier..\OM_LIB_DLL

但是我放了一个system.out.println来查看我的java.library.path,我的路径不是像linux下那样添加:(

有没有人发现了这个问题?

我把这篇文章作为一个答案,如果它能帮上忙的话

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26632003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档