junit4测试本机方法



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

在执行环境中一切顺利。

但我想对它们进行一些单元测试。

我有一个libCBareme.so,它依赖于libUtil_Cade.so

我将maven2.1与surefire插件一起使用,并添加到pom.xml文件中:

 <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"));路径是可以的,您可以在下一个日志中看到。

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

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,因为这是单元测试,所以我不想依赖于平台。

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

非常感谢

我只是试试这个:

     <configuration>
           <forkMode>once</forkMode>
           <workingDirectory>target</workingDirectory>
           <environmentVariables>
               <LD_LIBRARY_PATH>${project.basedir}/src/test/resources/om_lib/</LD_LIBRARY_PATH>
            </environmentVariables>
     </configuration>

而且它似乎起作用了!

但在windows上它不起作用,我看到我需要用如下的PATH替换LD_LIBRARY_PATH:

  <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下那样添加:(

有人发现这个问题了吗?

如果它能帮助

,我会把它作为一个答案发布

相关内容

  • 没有找到相关文章

最新更新