11

这是我的 ANT JUnit 目标

<target name="test" depends="compile" >
    <junit failureProperty="test.failure" >

        <jvmarg value="-Xdebug" />
        <jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5432" />

        <classpath>
            <pathelement path="${basedir}\..\Core\lib\junit-4.10.jar"/>
            <pathelement path="${basedir}\..\Suggestion\lib\ssce.jar"/>
            <pathelement path="C:\Java\javamail-1.4.1\mail.jar"/>
            <pathelement path="C:\Java\commons-net-2.0\commons-net-ftp-2.0.jar"/>
            <pathelement path="${basedir}\WebContent\WEB-INF\lib\gson-2.2.1.jar"/>
            <pathelement path="${tomcatLibs}\servlet-api.jar"/>
        </classpath>
        <classpath>
            <pathelement path="${build}"/>
        </classpath>
        <formatter type="brief" usefile="false" />          
        <test name="com.server.junit.ServerTestSuite" />
        <test name="com.junit.DictionaryTestSuite" />   
        <test name="com.util.junit.SuggestionTestSuite" />              
    </junit>

    <fail message="Unit test failed" if="test.failure"/>
</target>

如果通过 Eclipse 运行,我的单元测试可以通过,但如果我从 ANT 启动它们,则会失败。我希望它在单元测试的断点处停止。从文档中我知道我需要添加这些 jvmarg 但无法停止,所以我显然没有将它们放在正确的位置。另外,我认为我的端口不正确,但我应该使用哪个端口?通过eclipse调试JUnits时,我不必设置任何调试端口,它就可以了

4

2 回答 2

11

您需要忘记可以从 Eclipse 中运行 JUnit 测试和 ANT 目标的时刻。您想要的是调试一个恰好具有主类org.apache.tools.ant.Main并且可以ant从命令行启动的 Java 应用程序。

您现在有两个选择:您可以创建一个调用的启动配置,org.apache.tools.ant.Main但设置起来非常复杂(您必须复制ant脚本在启动时所做的所有事情)。

另一种选择是ant正确配置。在您的情况下,测试在ant进程内运行,但我不知道传递-Xdebug给 Ant 本身的简单方法。因此,您必须在新进程中运行测试。将此添加到junit任务中:

<junit fork="yes" forkmode="once" ...>

没有这个,jvmarg参数将被忽略。

下一步是在 Eclipse 中创建调试配置。这篇文章详细解释了这一点。对你来说,只有“结论”之前的最后一部分很重要。

于 2012-12-03T09:36:03.810 回答
4

详细说明:

  1. 在 Eclipse 中,导航到运行 | 调试。
  2. 选择左侧列中的远程 Java 应用程序。单击同一列底部的新建。
  3. 在创建配置屏幕中,系统将提示您输入一些值。从一个有意义的名字开始。对于 Project,选择包含要调试的源代码的 Java 项目。将 Connection Type 保留为默认值,即 Standard (Socket Attach) 。对于主机,输入 localhost。如果要调试远程服务器,请输入其主机名或 IP 地址。对于端口,输入 5432。
  4. 单击应用。
  5. 确保您的测试在调试模式下运行。在同一屏幕中单击 Debug 。Eclipse 应该自动将您带到 Debug 透视图,并且您应该在 Debug 视图中看到堆栈跟踪。
  6. 如果您没有自动转到 Debug 透视图,请选择 Window | 开放视角 | 其他然后单击调试。

取自这里

于 2012-12-03T09:29:20.253 回答