Tengo Hudson como servidor de integración continua y quiero usar la opción 'Publicar informe de resultados de prueba JUnit'. Pero no uso las herramientas de xUnit para las pruebas, en lugar de eso tengo scripts de shell que ejecutan pruebas y devuelven resultados en formato simple. Estoy pensando en hacer un script que transforme estos resultados al formato JUnit. Entonces, ¿me interesa cómo debe verse el archivo JUnit?
183
Respuestas:
Hice algo similar hace unos meses, y resultó que este formato simple era suficiente para que Hudson lo aceptara como un protocolo de prueba:
Esta pregunta tiene respuestas con más detalles: Spec. para JUnit XML Output
fuente
class
fue rechazado y soloclassname
funcionó.<testsuite tests="(number of tests)">
ex.<testsuite tests="10">
.<testcase classname="foo.bar" name="ATest" />
Esto pondrá la clase de barra en un paquete foo en Jenkins haciendo que su colección de pruebas sea más organizada.Acabo de tomar el junit-4.xsd que otros han vinculado y usé una herramienta llamada XMLSpear para convertir el esquema en un archivo XML en blanco con las opciones que se muestran a continuación. Este es el resultado (ligeramente limpio):
Algunos de estos elementos pueden ocurrir varias veces:
testsuites
elemento, ya que así es como funciona XML, pero puede haber variostestsuite
elementos dentro deltestsuites
elemento.properties
elemento puede tener variosproperty
hijos.testsuite
elemento puede tener variostestcase
hijos.testcase
elemento puede tener múltipleserror
,failure
,system-out
, osystem-err
los niños.fuente
Rootelement
:testsuites
,Max recursive de...
:2
,Max Repeat factor
:2
,include optional elements
: (sí = marcada),include optional attributes
: (sí = marcada)La respuesta principal de la pregunta Anders Lindahl se refiere a un archivo xsd .
Personalmente, encontré este archivo xsd también muy útil (no recuerdo cómo encontré ese). Parece un poco menos intimidante y, por lo que yo he usado, todos los elementos y atributos parecen ser reconocidos por Jenkins (v1.451)Sin embargo, una cosa: al agregar varios
<failure ...
elementos, solo uno se retuvo en Jenkins. Al crear el archivo xml, ahora concateno todas las fallas en una.Actualización 2016-11 El enlace está roto ahora. Una mejor alternativa es esta página de cubic.org: formato de archivo de informes XML JUnit , donde se ha realizado un buen esfuerzo para proporcionar un ejemplo documentado sensato . Ejemplo y xsd se copian a continuación, pero su página se ve mucho mejor.
ejemplo de archivo XML JUnit
Archivo JUnit XSD
fuente
No pude encontrar ninguna buena información sobre esto, así que hice un poco de prueba y error. Jenkins (v1.585) reconoce los siguientes atributos y campos (y solo estos).
(Comencé con este documento XML de muestra y trabajé hacia atrás desde allí).
fuente
Estructura básica Aquí hay un ejemplo de un archivo de salida JUnit, que muestra un resultado omitido y fallido, así como un único resultado aprobado.
A continuación se muestra la estructura documentada de un informe típico de JUnit XML. Tenga en cuenta que un informe puede contener 1 o más conjuntos de pruebas. Cada conjunto de pruebas tiene un conjunto de propiedades (información del entorno de grabación). Cada conjunto de pruebas también contiene 1 o más casos de prueba y cada caso de prueba contendrá un nodo omitido, de falla o error si la prueba no pasó. Si el caso de prueba ha pasado, entonces no contendrá ningún nodo. Para obtener más detalles sobre qué atributos son válidos para cada nodo, consulte la siguiente sección "Esquema".
fuente
Existen múltiples esquemas para los resultados "JUnit" y "xUnit".
model/xsd
)Tenga en cuenta que hay varias versiones del esquema en uso por el complemento xunit de Jenkins (la última versión actual es la
junit-10.xsd
que agrega soporte para el formato Erlang / OTP Junit).Algunos marcos de prueba, así como los complementos de informes de estilo "xUnit" también usan su propia salsa secreta para generar informes de estilo "xUnit", es posible que no utilicen un esquema particular (lea: lo intentan, pero las herramientas pueden no validarse contra ninguna un esquema) ¿Pruebas unitarias de Python en Jenkins? ofrece una comparación rápida de varias de estas bibliotecas y ligeras diferencias entre los informes xml generados.
fuente
Buenas respuestas aquí sobre el uso de python: (hay muchas formas de hacerlo) ¿ Pruebas unitarias de Python en Jenkins?
En mi humilde opinión, la mejor manera es escribir pruebas de prueba de unidad de Python e instalar pytest (algo así como 'yum install pytest') para instalar py.test. Luego ejecute pruebas como esta: 'py.test --junitxml results.xml test.py' . Puede ejecutar cualquier script python unittest y obtener resultados jUnit xml.
https://docs.python.org/2.7/library/unittest.html
En la configuración de compilación de jenkins Acciones posteriores a la compilación Agregue una acción "Publicar informe de resultados de prueba JUnit" con result.xml y cualquier otro archivo de resultados de prueba que produzca.
fuente
He decidido publicar una nueva respuesta, porque algunas respuestas existentes están desactualizadas o incompletas.
En primer lugar: no hay nada parecido
JUnit XML Format Specification
, simplemente porque JUnit no produce ningún tipo de informe XML o HTML.La generación de informes XML en sí proviene de la tarea Ant JUnit / Maven Surefire Plugin / Gradle (lo que utilice para ejecutar sus pruebas). El formato de informe XML fue introducido por primera vez por Ant y luego adaptado por Maven (y Gradle).
Si alguien solo necesita un formato XML oficial, entonces:
Espero que ayude a alguien.
fuente
**/build/test-results/**/TEST-*.xml
. ¡¡¡Muchas gracias!!!