【问题标题】:Trying to run ANT JUnit target in debug mode in Eclipse尝试在 Eclipse 中以调试模式运行 ANT JUnit 目标
【发布时间】:2012-12-03 17:36:03
【问题描述】:

这是我的 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时我不需要设置任何调试端口,它就可以工作

【问题讨论】:

    标签: java ant junit


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 这两个答案都对我有帮助,但这个更是如此。谢谢
    • forkmode=once 是我需要的魔法!好好投票吧 ;-)
    【解决方案2】:

    详细说明:

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

    取自here

    【讨论】:

    • “确保您的测试在调试模式下运行”是什么意思?我应该在运行我的 ant 目标之前运行我的测试类吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-11
    相关资源
    最近更新 更多