用过滤后的资源调试maven junit测试?

时间:2010-05-18 08:47:51

标签: eclipse maven-2 junit surefire

我们在JUnit测试中使用过滤的testResources,这些测试通常由maven surefire插件执行。也就是说,pom包含一个部分

  <build>
    <testResources>
      <testResource>
        <directory>src/test/resources</directory>
        <filtering>true</filtering>
      </testResource>
    </testResources>
    ...

如何在调试器中运行此类JUnit-tests?如果我在eclipse中执行测试,测试将失败,因为测试资源未被过滤。如果过滤后的测试资源会写入目标目录的某处,我可以将其用作附加的源路径 - 但事实并非如此。如果我尝试使用Debug As / maven测试在eclipse中运行maven构建,则构建不会在断点中停止。还有其他想法吗?

2 个答案:

答案 0 :(得分:4)

有几种选择。首先,您可以从命令行运行测试,指定 maven.surefire.debug 。默认情况下,surefire测试在分叉的JVM中运行,这意味着如果您只调试maven进程,则不会在测试断点中获得任何停顿。这可能就是你现在所看到的。另请参阅http://maven.apache.org/plugins/maven-surefire-plugin/examples/debugging.html

Othwerwise我建议在IDE中将项目配置为maven项目。如果项目配置为maven项目,则在运行测试之前将自动进行资源过滤。至少它是如何在Idea中运行的,我认为Eclipse在安装正确的maven插件时也是如此。

您还可以从命令行运行maven构建一次,然后手动将 target / test-classes 目录添加到IDE配置中。工作,但有点狡猾。

答案 1 :(得分:1)

  

如果我在eclipse中执行测试,测试将失败,因为测试资源未被过滤。

使用m2eclipse,资源将在Eclipse中过滤。