gpt4 book ai didi

maven - 使用 native 库进行Surefire JUnit测试

转载 作者:行者123 更新时间:2023-12-04 03:59:44 24 4
gpt4 key购买 nike

我们在 hudson 使用Maven运行Java构建过程,并使用Surefire插件执行JUnit测试,但是对于一个需要 native dll的项目,我遇到了单元测试问题。

我们看到的错误是:

Tests in error: TestFormRegistrationServiceConnection(com.#productidentifierremoved#.test.RegistrationServiceTest): no Authenticator in java.library.path



其中Authenticator是我们需要的dll的名称。
我发现 this SO post,表明设置它的唯一方法是通过argLine。我们将配置修改为:
    <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>2.10</version>
<configuration>
<forkMode>once</forkMode>
<argLine>-Djava.library.path=${basedir}\src\main\native\Authenticator\Release</argLine>
</configuration>
</plugin>

但是,如果我们包含System.out.println(System.getProperty(“java.library.path”)),这仍然会产生相同的错误。我们可以看到它没有被添加到路径中。

有什么想法可以解决这个问题吗?

最佳答案

要将系统属性添加到JUnit测试中,请按以下方式配置Maven Surefire Plugin:

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<java.library.path>${project.basedir}/src/main/native/Authenticator/Release</java.library.path>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>

更新:

好的,似乎必须在使用JUnit测试的JVM启动之前设置此属性。因此,我想您在反斜杠方面遇到了问题。 Java属性值中的反斜杠用于转义特殊字符,例如 \t(制表符)或 \r\n(Windows新行)。因此,请尝试使用此方法代替您的解决方案:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<forkMode>once</forkMode>
<argLine>-Djava.library.path=${project.basedir}/src/main/native/Authenticator/Release</argLine>
</configuration>
</plugin>
</plugins>
</build>

关于maven - 使用 native 库进行Surefire JUnit测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10226082/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com