2012-12-03 11 views
8

Hier ist mein ANT JUnit ZielVersuch ANT JUnit Ziel im Debug-Modus in 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> 

Meine Einheit Tests bestehen fein zu laufen, wenn durch Eclipse-laufen, aber nicht, wenn ich sie von ANT Laund. Ich möchte es an meinem Haltepunkt in einem Unit-Test stoppen. Aus der Dokumentation weiß ich, ich muss diese jvmarg hinzufügen, aber kann es nicht stoppen, so dass ich sie offensichtlich nicht am richtigen Ort habe. Ich glaube auch nicht, dass der Port korrekt ist, aber welchen Port sollte ich verwenden? Ich habe nicht alle Debug-Port eingerichtet, wenn JUnits durch Eclipse debuggen, es funktionierte nur

Antwort

10

Sie müssen einen Moment vergessen, dass Sie JUnit-Tests und ANT-Ziele in Eclipse ausführen können. Sie möchten eine Java-Anwendung debuggen, die zufällig die Hauptklasse org.apache.tools.ant.Main hat und die über die Befehlszeile mit ant gestartet werden kann.

Sie haben jetzt zwei Optionen: Sie können eine Startkonfiguration erstellen, die org.apache.tools.ant.Main aufruft, aber das ist ziemlich kompliziert einzurichten (Sie müssen alles replizieren, was das ant Skript beim Start tut).

Die andere Alternative besteht darin, ant korrekt zu konfigurieren. In Ihrem Fall laufen die Tests innerhalb des ant Prozesses, aber ich kenne keine einfache Möglichkeit, -Xdebug an Ant selbst zu übergeben. Daher müssen Sie die Tests in einem neuen Prozess ausführen. Fügen Sie diese auf der junit Aufgabe:

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

Ohne dies wird jvmarg Parameter ignoriert.

Der nächste Schritt besteht darin, eine Debug-Konfiguration in Eclipse zu erstellen. This article erklärt dies im Detail. Für Sie ist nur der letzte Teil kurz vor "Schlussfolgerung" wichtig.

+0

Beide Antworten haben mir aber dieses eine mehr geholfen. Thnx – MayoMan

+0

forkmode = Einmal ist die Magie, die ich brauchte! Naja, arbeite den Upvote ;-) –

4

Detaillierte Anleitungen:

  1. In Eclipse navigieren zu starten | Debuggen.
  2. Wählen Sie Remote-Java-Anwendung in der linken Spalte. Klicken Sie unten in derselben Spalte auf Neu.
  3. Im Bildschirm Konfiguration erstellen werden Sie aufgefordert, einige Werte einzugeben. Beginnen Sie mit einem aussagekräftigen Namen. Wählen Sie unter Projekt das Java-Projekt mit dem Quellcode aus, den Sie debuggen möchten. Lassen Sie den Verbindungstyp standardmäßig, d. H. Standard (Socket Attach). Geben Sie als Host localhost ein. Wenn Sie einen Remote-Server debuggen möchten, geben Sie seinen Hostnamen oder seine IP-Adresse ein. Geben Sie für Port 5432 ein.
  4. Klicken Sie auf Übernehmen.
  5. Stellen Sie sicher, dass Ihre Tests im Debug-Modus ausgeführt werden. Auf demselben Bildschirm klicken Sie auf Debug. Eclipse sollte Sie automatisch zur Debug-Perspektive führen und Sie sollten eine Stack-Ablaufverfolgung in der Debug-Ansicht sehen.
  6. Wenn Sie nicht automatisch in die Debug-Perspektive gelangen, wählen Sie Fenster | Perspektive öffnen | Andere und klicken Sie dann auf Debuggen.

entnommen von here.

+0

Was meinen Sie "Stellen Sie sicher, dass Ihre Tests im Debug-Modus ausgeführt werden?" Soll ich meine Testklasse ausführen, bevor ich mein Ameisen-Ziel ausführe? – PunDefeated