2012-12-03 79 views
8

运行Ant JUnit的目标这是我的ANT JUnit的目标,如果通过Eclipse中运行,但如果我从ANT laund他们失败试图在调试模式在Eclipse

<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> 

我的单元测试通过罚款。 我希望它在单元测试中的中断点停下来。 从文档我知道我需要添加这些jvmarg,但不能让它停下来,所以我显然没有他们在正确的地方。 此外,我不认为我有端口正确,但我应该使用什么端口?我没有通过月食调试JUnits时设置任何调试端口,它只是工作

回答

10

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

现在你有两个选择:你可以创建一个启动配置调用org.apache.tools.ant.Main但这是相当复杂的设置(你将不得不复制的ant脚本确实在启动一切)。

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

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

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

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

+0

这两个答案都对我有帮助,但更多的是这样。 Thnx – MayoMan

+0

forkmode =曾经是我需要的魔法!那么工作upvote ;-) –

4

详细说明:

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

摘自here

+0

你是什么意思“确保你的测试在调试模式下运行?”我应该在运行我的蚂蚁目标之前运行我的测试课吗? – PunDefeated