2012-12-03 8 views
8

Ecco il mio obiettivo ANT JUnitCercando di eseguire bersaglio JUnit ANT in modalità di debug 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> 

mio test di unità passano bene se eseguito attraverso Eclipse, ma non riescono se li laund da ANT. Voglio che si fermi al mio punto di rottura in un test unitario. Dalla documentazione so che ho bisogno di aggiungere questi jvmarg ma non riesco a farlo smettere quindi ovviamente non li ho nel posto giusto. Inoltre, non penso di avere la porta corretta ma quale porta dovrei usare? Non ho dovuto impostare qualsiasi porta di debug durante il debug JUnits attraverso eclissi, semplicemente lavorato

risposta

10

È necessario dimenticare un momento in cui è possibile eseguire test JUnit e obiettivi ANT da Eclipse. Quello che vuoi è eseguire il debug di un'applicazione Java che ha la classe principale org.apache.tools.ant.Main e che può essere avviata con ant dalla riga di comando.

Ora hai due opzioni: puoi creare una configurazione di avvio che richiama org.apache.tools.ant.Main ma è piuttosto complicato da configurare (dovrai replicare tutto ciò che lo script ant esegue all'avvio).

L'altra alternativa è configurare correttamente ant. Nel tuo caso, i test vengono eseguiti all'interno del processo ant ma non conosco un modo semplice per passare -Xdebug alla stessa Ant. Pertanto, è necessario eseguire i test in un nuovo processo. Aggiungere questo al compito junit:

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

Senza questo, jvmarg parametri verranno ignorati.

Il passaggio successivo consiste nel creare una configurazione di debug in Eclipse. This article spiega questo in dettaglio. Per te, solo l'ultima parte proprio prima di "Conclusione" è importante.

+0

Entrambe le risposte mi hanno aiutato ma anche questo più. Thnx – MayoMan

+0

forkmode = una volta è la magia di cui avevo bisogno! Beh, lavora l'upvote ;-) –

4

Istruzioni dettagliate:

  1. In Eclipse, passare a Run | Debug.
  2. Selezionare Remote Java Application, sulla colonna di sinistra. Fai clic su Nuovo, nella parte inferiore della stessa colonna.
  3. Nella schermata di configurazione della creazione verrà richiesto di immettere alcuni valori. Inizia con un nome significativo. Per Progetto, selezionare il progetto Java che contiene il codice sorgente che si desidera eseguire il debug. Lasciare il tipo di connessione come predefinito, ad esempio Standard (Socket Attach). Per Host, inserisci localhost. Se si desidera eseguire il debug di un server remoto, immettere il nome host o l'indirizzo IP. Per il porto, immettere 5432.
  4. Fare clic su Applica.
  5. Assicurarsi che i test siano in esecuzione in modalità di debug. Nella stessa schermata, fai clic su Debug. Eclipse dovrebbe portarti automaticamente alla prospettiva Debug e dovresti vedere una traccia dello stack nella vista Debug.
  6. Se non si passa automaticamente alla prospettiva Debug, selezionare Finestra | Prospettiva aperta | Altro e quindi fare clic su Debug.

Tratto da here.

+0

Che cosa intendi "Assicurati che i test siano eseguiti in modalità di debug?" Devo eseguire la mia lezione di test prima di eseguire il mio obiettivo di formica? – PunDefeated

Problemi correlati