一尘不染

尝试在Eclipse中以调试模式运行ANT JUnit目标

java

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


阅读 219

收藏
2020-12-03

共1个答案

一尘不染

您需要忘记片刻,您可以在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中创建调试配置。本文详细解释了这一点。对于您来说,只有“结论”之前的最后一部分很重要。

2020-12-03