2011-08-17 6 views
11

Sto usando formica e TestNG 6.1.1 e ho eseguito i miei test solo bene ieri. Oggi quando provo a eseguire i test ottengo un NoClassDefFoundError che coinvolge com/beust/jcommander/ParamException. Ecco l'output:All'improvviso non è possibile eseguire test TestNG da ant ([testng] Causato da: java.lang.ClassNotFoundException: com.beust.jcommander.ParameterException)

[copy] Copying 1 file to /Users/djohnson/src/webapp/components/build/tmp 
[testng] Exception in thread "main" java.lang.NoClassDefFoundError: com/beust/jcommander/ParameterException 
[testng] Caused by: java.lang.ClassNotFoundException: com.beust.jcommander.ParameterException 
[testng] at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
[testng] at java.security.AccessController.doPrivileged(Native Method) 
[testng] at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
[testng] at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
[testng] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
[testng] at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
[testng] The tests failed. 

Ecco il file XML che sto usando:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="Single Method Suite"> 
    <test name="Single Method Test"> 
    <classes> 
     <class name="DhcpTest"> 
     <methods> 
      <exclude name=".*" /> 
      <include name="setGetEnabledTest" /> 
     </methods> 
     </class> 
    </classes> 
    </test> 
</suite> 

Ho anche specificato il percorso completo per la classe senza fortuna. Ho controllato il classpath e tutto sembra a posto, qualcuno ha qualche idea su questo?

+0

Va bene, così ho aggiunto jcommander-1.17.jar al classpath, e ho ancora ottenere lo stesso errore. – anotherdjohnson

+0

Ora che ho pubblicato questo messaggio per tutto il mondo, ho scoperto che jcommander non si trovava effettivamente nel classpath. Ero sicuro di averlo visto lì, ma era sicuro che mancasse. Ora non riesce a trovare il test, non so perché, perché ho triplicato il classpath, ed è sicuramente lì. – anotherdjohnson

risposta

8

Se stai usando formica, JCommander dovrebbe essere all'interno di testng.jar, quindi penso che il tuo file testng.jar potrebbe essere corrotto.

+0

Cedric, hai ragione, ho scaricato una copia di testng.jar dal sito web e ha funzionato bene senza avere un jcommander jar. Stiamo usando edera in modo apparentemente ha un file corrotto nella cache. Dovrò cercare di ottenere quello curato. Grazie per avermi aiutato, ancora una volta. – anotherdjohnson

+0

Felice di sentirlo. Per tua informazione, 'rm -rf ~/.ivy2/org.testng' dovrebbe occuparsi del problema. –

+1

Cedric, si scopre che il file che sto usando è lo stesso che si trova nel repository di Maven 2, quindi non rimuoverlo dalla mia cache di edera. C'è un problema con il file nella cache o c'è qualcos'altro che succede qui? – anotherdjohnson

0

Può essere testng.jar non è in classpath.

+0

Come ho menzionato nel mio post originale, ho controllato il percorso della classe. Si prega di vedere la risposta di Cedric sopra. – anotherdjohnson

4

Se la vostra utilizzando Maven prova ad aggiungere questo alla vostra pom.xml

<dependency> 
    <groupId>com.beust</groupId> 
    <artifactId>jcommander</artifactId> 
    <version>1.30</version> 
</dependency> 
3

jcommander.jar (ad esempio jcommander-1.29.jar) dovrebbero essere presenti nella directory set di file di cui si parla in build.xml

è possibile scaricarlo da: http://mvnrepository.com/artifact/com.beust/jcommander/1.27

O,

JCommander dovrebbe essere all'interno testng.jar durante usando ant. Il tuo file testng.jar potrebbe essere danneggiato, quindi per favore sostituisci il vecchio testng.jar con uno nuovo.

0

Ho avuto lo stesso problema con un progetto non Maven. Ho recuperato il vaso test da Maven Central, ma non conteneva tutte le dipendenze di TestNG. Il download del jar direttamente dal sito TestNG ha risolto il problema, poiché contiene le dipendenze.

Avrei dovuto prestare più attenzione alle indicazioni sul TestNG's download page ...

L'ultima versione di TestNG può essere scaricata dal Maven centrale o qui per gli utenti formica.

0

La mia partenza formica a lavorare quando ho scaricato vaso jcommandar da repository Maven e ha aggiunto nel mio file jar

ma questo problema comincia a venire con TestNG 6.8.5 versione

0

Il problema qui è che alcune versioni del vaso testNG non hanno il codice jar jcommander al loro interno. Di conseguenza, devi aggiungere il classpath al jar Jcommander separatamente.

Aggiungendo il vaso Jcommander al classpath quando lo si esegue risolverà il problema, si spera