2011-08-17 23 views
11

estoy usando hormigas y TestNG 6.1.1, y yo tenía mis pruebas trabajar solo bien ayer. Hoy, cuando trato de ejecutar las pruebas, obtengo un NoClassDefFoundError que incluye com/beust/jcommander/ParamException. Aquí está la salida:repente no se puede ejecutar pruebas TestNG de hormiga ([TestNG] causada por: 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. 

aquí es el archivo .xml que estoy 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> 

También he especificado la ruta completa para la clase, pero sin suerte. He comprobado el classpath y todo parece estar bien, ¿alguien tiene alguna idea sobre esto?

+0

bien, así que he añadido JCommander-1.17.jar a la ruta de clases, y sigo teniendo el mismo error. – anotherdjohnson

+0

Ahora que he publicado esto para que todo el mundo lo vea, descubrí que jcommander no estaba realmente en la ruta de clases. Estaba seguro de haberlo visto allí, pero por supuesto me faltaba. Ahora no puede encontrar la prueba, no estoy seguro por qué, porque he comprobado tres veces la ruta de clases, y definitivamente está allí. – anotherdjohnson

Respuesta

8

Si está usando hormiga, JCommander debería estar dentro de testng.jar, entonces estoy pensando que su archivo testng.jar podría estar dañado.

+0

Cedric, tiene razón, descargué una copia de testng.jar del sitio web y funcionó perfectamente sin tener un jcommander jar. Estamos usando hiedra así que aparentemente tiene un archivo corrupto en el caché. Tendré que buscar que me ocupen de eso. Gracias por ayudarme, una vez más. – anotherdjohnson

+0

Me alegra oírlo. FYI, 'rm -rf ~/.ivy2/org.testng' debería encargarse del problema. –

+1

Cedric, resulta que el archivo que estoy usando es el mismo archivo que está en el repositorio de Maven 2, por lo que eliminarlo de mi caché de hiedra no ayuda. ¿Hay algún problema con el archivo en el caché o hay algo más que esté sucediendo aquí? – anotherdjohnson

0

Puede que testng.jar no se encuentre en classpath.

+0

Como mencioné en mi publicación original, verifiqué la ruta de la clase. Por favor vea la respuesta de Cedric arriba. – anotherdjohnson

4

Si su uso de Maven trate de añadir esto a su pom.xml

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

jcommander.jar (por ejemplo JCommander-1.29.jar) debe estar presente en el directorio de conjunto de archivos que se menciona en el build.xml

se puede descargar desde: http://mvnrepository.com/artifact/com.beust/jcommander/1.27

O,

JCommander debe estar dentro testng.jar durante el uso de la hormiga. Su archivo testng.jar puede estar dañado, así que reemplace el viejo testng.jar por uno nuevo.

0

Tuve el mismo problema con un proyecto que no es Maven. Recuperé el jarro de prueba de Maven Central, pero no contenía todas las dependencias de TestNG. La descarga del contenedor directamente desde el sitio TestNG resolvió el problema, ya que contiene las dependencias.

Debería haber prestado más atención a las instrucciones de TestNG's download page ...

La última versión de TestNG se puede descargar desde Maven central o aquí para usuarios de hormigas.

0

Mi hormiga empezar a trabajar cuando he descargado frasco jcommandar de repositorio de Maven y ha añadido que en mi archivo jar

pero este problema empieza a llegar con TestNG 6.8.5 versión

0

El problema aquí es que ciertas versiones del jar testNG no tienen el código jar jcommander dentro de ellos. Como resultado, debe agregar el classpath al jarrón Jcommander por separado.

Añadiendo el frasco JCommander a la ruta de clases cuando se ejecuta se solucionará el problema, es de esperar

Cuestiones relacionadas