如何找到Surefire / Junit4测试将搜索的类路径?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何找到Surefire / Junit4测试将搜索的类路径?相关的知识,希望对你有一定的参考价值。

我需要覆盖作为基于Maven的构建的一部分运行的JUnit测试中的一些属性。为了做到这一点,我需要弄清楚在我们的测试环境中将覆盖文件放在何处。如何确定此行在测试环境中运行时检查的类路径?

stream = getClass().getClassLoader().getResourceAsStream(resourceName);

我已经检查了ClassLoader的javadoc,但在这一点上它并不是非常清楚。

答案

要查找类路径,您只需使用maven的dependency:build-classpath插件:

mvn dependency:build-classpath -DincludeScope=test

这将为您提供运行surefire时使用的完整类路径。实际上,includeScope = test是默认值,所以你可以错过它。否则,您可以指定任何范围,例如compile:

mvn dependency:build-classpath -DincludeScope=compile
另一答案

调试输出怎么样?

mvn --debug clean install

这将输出你需要的几乎所有东西。按照加载的顺序包含类路径。

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Determined Maven Process ID 15288
[DEBUG] boot classpath:  
<REPO>orgapachemavensurefiresurefire-booter2.21.0surefire-booter-2.21.0.jar  
<REPO>orgapachemavensurefiresurefire-api2.21.0surefire-api-2.21.0.jar  
<REPO>orgapachemavensurefiresurefire-logger-api2.21.0surefire-logger-api-2.21.0.jar  
<PROJECT>src	arget	est-classes  
<PROJECT>src	argetclasses  
<REPO><all your dependencies> 
<classpath configured as additionalClasspathElement>  
<REPO>orgapachemavensurefiresurefire-junit42.21.0surefire-junit4-2.21.0.jar

boot(compact) classpath:  
<exact same thing as above without full file paths>

Forking command line: 
cmd.exe /X /C ""C:Program FilesJavajdk1.8.0_121jreinjava" -ea -jar C:<TEMP>surefire3859643060701954342surefirebooter6402473409535798561.jar C:<TEMP>surefire3859643060701954342 2018-06-04T11-50-05_916-jvmRun1 surefire7765693984737889544tmp surefire_08839138260978763550tmp"

Running <all my test cases>

以上是关于如何找到Surefire / Junit4测试将搜索的类路径?的主要内容,如果未能解决你的问题,请参考以下文章

Maven/Surefire 找不到要运行的测试

Maven单元测试

Junit 并行执行测试

Maven 学习总结

如何使用 maven-surefire-plugin 在同一个项目中执行 JUnit 和 TestNG 测试?

如何在 Maven 中按类别运行 JUnit 测试?