【问题标题】:How can I find the classpath that a Surefire/Junit4 test will search?如何找到 Surefire/Junit4 测试将搜索的类路径?
【发布时间】:2013-06-05 14:52:16
【问题描述】:

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

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

我已经检查了 ClassLoader 的 javadoc,但在这一点上还不是很清楚。

【问题讨论】:

    标签: java maven junit


    【解决方案1】:

    要找到classpath,你可以简单地使用maven的dependency:build-classpath插件:

    mvn dependency:build-classpath -DincludeScope=test
    

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

    mvn dependency:build-classpath -DincludeScope=compile
    

    【讨论】:

    • 不幸的是,这不会返回完整的类路径,而只会返回使用的依赖项。通常 target/classes 和 target/test-classes 也将成为surefire用于测试执行的类路径的一部分。
    【解决方案2】:

    调试输出怎么样?

    mvn --debug clean install
    

    这将输出您需要的几乎所有内容。 按照加载顺序包含类路径。

    -------------------------------------------------------
     T E S T S
    -------------------------------------------------------
    Determined Maven Process ID 15288
    [DEBUG] boot classpath:  
    \<REPO>\org\apache\maven\surefire\surefire-booter\2.21.0\surefire-booter-2.21.0.jar  
    \<REPO>\org\apache\maven\surefire\surefire-api\2.21.0\surefire-api-2.21.0.jar  
    \<REPO>\org\apache\maven\surefire\surefire-logger-api\2.21.0\surefire-logger-api-2.21.0.jar  
    \<PROJECT>\src\target\test-classes  
    \<PROJECT>\src\target\classes  
    \<REPO>\<all your dependencies> 
    \<classpath configured as additionalClasspathElement>  
    \<REPO>\org\apache\maven\surefire\surefire-junit4\2.21.0\surefire-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 Files\Java\jdk1.8.0_121\jre\bin\java" -ea -jar C:\<TEMP>\surefire3859643060701954342\surefirebooter6402473409535798561.jar C:\<TEMP>\surefire3859643060701954342 2018-06-04T11-50-05_916-jvmRun1 surefire7765693984737889544tmp surefire_08839138260978763550tmp"
    
    Running <all my test cases>
    

    【讨论】:

      猜你喜欢
      • 2019-11-20
      • 2010-12-21
      • 1970-01-01
      • 2012-12-17
      • 1970-01-01
      • 1970-01-01
      • 2019-11-22
      • 2014-10-20
      • 2010-11-17
      相关资源
      最近更新 更多