代码之家  ›  专栏  ›  技术社区  ›  Dr. Hans-Peter Störr

使用筛选的资源调试MavenJunit测试?

  •  4
  • Dr. Hans-Peter Störr  · 技术社区  · 14 年前

    我们在JUnit测试中使用过滤的测试资源,通常由MavenSurefire插件执行。也就是说,POM包含一个部分

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

    如何在调试器中运行这样的JUnit测试?如果我在Eclipse中执行测试,那么测试会失败,因为测试资源没有被过滤。如果过滤后的测试资源被写到目标目录的某个地方,我可以把它作为一个额外的源路径——但事实并非如此。如果我尝试使用debug as/maven测试在Eclipse中运行maven构建,那么构建不会在断点处停止。还有其他想法吗?

    2 回复  |  直到 10 年前
        1
  •  4
  •   Hardy    14 年前

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

    否则,我建议将您的项目在IDE中配置为Maven项目。如果将项目配置为Maven项目,则在运行测试之前,将自动进行资源筛选。这至少是它在IDEA中的工作方式,我认为Eclipse在安装正确的Maven插件时也会这样做。

    也可以从命令行运行一次maven构建,然后手动添加 目标/测试类 到您的IDE配置的目录。有效,但有点狡猾。

        2
  •  1
  •   Pascal Thivent    14 年前

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

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