4

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

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

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

4

2 回答 2

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 配置中。有效,但有点狡猾。

于 2010-05-18T09:02:14.083 回答
1

如果我在 Eclipse 中执行测试,则测试会失败,因为没有过滤测试资源。

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

于 2010-05-18T09:47:56.420 回答