运行测试用例(使用MVN测试)时,我的测试用例失败;因为我在内部使用的一个库中调用了一个dll文件。我的测试用例失败了,说该文件不在Java库路径中。以下是我的POM文件和测试输出(来自MVN测试)。我将dll文件复制到src/test/资源,但没有帮助
<build>
<directory>target</directory>
<outputDirectory>target/classes</outputDirectory>
<finalName>${artifactId}-${version}</finalName>
<testOutputDirectory>target/test-classes</testOutputDirectory>
<sourceDirectory>src/main/java</sourceDirectory>
<!-- <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory> -->
<testSourceDirectory>src/test</testSourceDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>src/test/resources</directory>
</testResource>
</testResources>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
</plugin>
</plugins>
</pluginManagement>
t e s t s
1 [main] DEBUG Sigar - no sigar-amd64-winnt.dll in java.library.path
org.hyperic.sigar.SigarException: no sigar-amd64-winnt.dll in java.library.path
at org.hyperic.sigar.Sigar.loadLibrary(Sigar.java:172)
at org.hyperic.sigar.Sigar.<clinit>(Sigar.java:100)
at org.hyperic.sigar.cmd.Shell.<init>(Shell.java:50)
at org.hyperic.sigar.cmd.SigarCommandBase.<init>(SigarCommandBase.java:75)
at com.harmonia.cbm.dataaquisition.pal.CpuInfoTest.<init>(CpuInfoTest.java:41)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:357)
at java.lang.Class.newInstance(Class.java:310)
at org.apache.maven.surefire.junit.PojoTestSet.<init>(PojoTestSet.java:63)
at rg.apache.maven.surefire.junit.JUnit3Provider.createTestSet(JUnit3Provider.java:117)
at org.apache.maven.surefire.junit.JUnit3Provider.invoke(JUnit3Provider.java:107)
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(Fork
edBooter.java:153)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
基本上需要将dll文件的路径放在Windows的%PATH%
变量中,或者使用Maven的Surefire插件明确设置它,因为您在测试阶段中遇到了此错误。<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<