Error al intentar ejecutar mstest en jenkins
msbuild (4)
Al final, me di por vencido en la configuración de MSTest a través de los paneles fáciles: no encontraría la dll de prueba, así que como el tipo de arriba, usé el comando de lotes. A continuación, agregué mi comando de proceso por lotes porque aborda algunos problemas con respuestas anteriores que no tienen en cuenta que debe eliminar el archivo .trx antes de cada ejecución, o darle un nombre único o las pruebas fallarán.
Aquí está mi solución que se ejecuta en Jenkins como un comando por lotes:
"C:Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/MSTest.exe" /resultsfile:"%WORKSPACE%/MyAppTest_%BUILD_NUMBER%.trx" /testcontainer:"%WORKSPACE%/Components/ebox2/Central/MyApp/MyAppWeb/trunk/MyAppTest/bin/Release/MyAppTest.dll" /nologo /category:Build
Tenga en cuenta la inclusión de% BUILD_NUMBER% en el nombre del archivo .trx, que soluciona el problema de los trabajos que fallan debido a un archivo .trx duplicado.
Tenga en cuenta también que / category: Build le permite elegir las pruebas que desea. Se configura la categoría en las propias pruebas:
[TestCategory("Build"), TestMethod()]
Uso esto porque tengo algunas pruebas de Selenium que aún no he descubierto cómo ejecutar en Jenkins, o si esto es posible.
Estoy intentando configurar el complemento de compilación MSTest en jenkins, pero obtengo el siguiente error:
Path To MSTest.exe: mstest.exe
Result file was not found so no action has been taken. file:/C:/Program%20Files%20(x86)/Jenkins/jobs/SoftwrenchvNext/workspace/TestResult.trx
FATAL: null
java.lang.NullPointerException
at org.jenkinsci.plugins.MsTestBuilder.perform(MsTestBuilder.java:144)
La configuración simplemente especifica TestResult.trx como ResultFileName. Este archivo no está versionado, y espero que se cree en cada compilación.
¿Qué hay que hacer para eso?
Después de una investigación, pude hacer que MSTest trabajara en Jenkins haciendo lo siguiente:
Selecciona Gestionar Jenkins
Desde el Gestor Jenkins, elija Configurar sistema.
En Configurar sistema, necesitará encontrar MSTest y agregar su configuración MSTest
Ingrese su configuración como mejor le parezca. El mío aparece como sigue:
Guarde la configuración y luego vaya a su proyecto de compilación y configure los elementos apropiados, como se muestra a continuación:
Una cosa a tener en cuenta es que no seguí ninguno de los pasos enumerados en el sitio del autor porque no parecían tener ningún sentido para mí. Sin embargo, leí el código, dediqué un tiempo a excavar y me di cuenta de que la pieza faltante estaba en la página Configurar sistema de Jenkins.
¡Aclamaciones!
Otra cosa a tener en cuenta: Esto no funciona con .NetCore, solo con el .Net Framework regular (vea https://github.com/Microsoft/vstest/issues/1213#issuecomment-338561792 y https://developercommunity.visualstudio.com/content/problem/238572/mstest-command-line-reports-no-tests-to-run.html )
Utilicé un trabajo por lotes en Jenkins con algo como el siguiente código:
dotnet test src/Folder/Project.csproj --logger:trx
Encuentre la referencia completa para la dotnet test
aquí: https://docs.microsoft.com/de-de/dotnet/core/tools/dotnet-test?tabs=netcore21
Yo también tuve este mismo mensaje de error!
Mi recomendación es reemplazar el paso "Ejecutar pruebas unitarias con MSTest". con un paso "Ejecutar comando por lotes de Windows". Esto funcionó para mí.
Mando
del TestResults.trx
"C:/Program Files (x86)/Microsoft Visual Studio 11.0/Common7/IDE/MSTest.exe" /testcontainer:Example.Tests/bin/Debug/Example.Tests.dll /resultsfile:TestResults.trx
Con esta técnica, puede seguir utilizando el paso "Publicar informe de resultados de prueba MSTest" especificando ...
Informe de prueba del archivo TRX
TestResults.trx
¡Buena suerte!
Además, puede "simular" la funcionalidad "Continuar con las pruebas fallidas" con una llamada "SALIR", como se muestra a continuación.
del TestResults.trx
"C:/Program Files (x86)/Microsoft Visual Studio 11.0/Common7/IDE/MSTest.exe" /testcontainer:Example.Tests/bin/Debug/Example.Tests.dll /resultsfile:TestResults.trx /nologo
EXIT /B 0