Solución:
Necesitaba hacer exactamente lo que tú haces, así es como configuré a Jenkins para hacer esto:
- Agregue el complemento NUnit a Jenkins
- En tu proyecto ve a Configurar -> Construir -> Agregar un paso de compilación
- En el menú desplegable, desplácese hacia abajo hasta -> Ejecutar el comando por lotes de Windows
- Asegúrese de que este paso se coloque después de su paso de MSBuild
- Agregue lo siguiente, reemplazando las variables:
Prueba de dll única:
[PathToNUnit] bin nunit-console.exe [PathToTestDll] Selenium.Tests.dll /xml=nunit-result.xml
Prueba de dll múltiple usando proyectos de prueba NUnit:
[PathToNUnit] bin nunit-console.exe [PathToTests] Selenium.Tests.nunit /xml=nunit-result.xml
- Debajo Acciones posteriores a la construcción, garrapata Publicar informe de resultados de la prueba NUnit
- Para el cuadro de texto XML de informes de prueba, ingresar nunit-result.xml
Una vez que se haya creado su proyecto, NUNit ahora se ejecutará y los resultados se podrán ver en el Panel de control (si se desplaza sobre el ícono del Informe meteorológico) o en la página del proyecto debajo de Resultado de la última prueba.
También puede ejecutar el comando desde Visual Studio o como parte de su proceso de compilación local.
Aquí hay dos publicaciones de blog que usé como referencia. No encontré ninguno que se ajustara exactamente a mis requisitos:
Guía de 1 hora para la configuración de integración continua: Jenkins se encuentra con .Net (2011)
Guía para la construcción de proyectos .NET usando Hudson (2008)
Si no desea codificar sus proyectos de prueba unitaria, es mejor que escriba un script para obtener todos los dll de su proyecto de prueba unitaria. Lo hacemos con Powershell y seguimos una convención específica para nombrar nuestros proyectos de pruebas unitarias. Aquí está el contenido del archivo de PowerShell que ejecuta nuestras pruebas unitarias:
param(
[string] $sourceDirectory = $env:WORKSPACE
, $fileFilters = @("*.UnitTests.dll", "*_UnitTests.dll", "*UnitTests.dll")
, [string]$filterText = "*binDebug*"
)
#script that executes all unit tests available.
$nUnitLog = Join-Path $sourceDirectory "UnitTestResults.txt"
$nUnitErrorLog = Join-Path $sourceDirectory "UnitTestErrors.txt"
Write-Host "Source: $sourceDirectory"
Write-Host "NUnit Results: $nUnitLog"
Write-Host "NUnit Error Log: $nUnitErrorLog"
Write-Host "File Filters: $fileFilters"
Write-Host "Filter Text: $filterText"
$cFiles = ""
$nUnitExecutable = "C:Program Files (x86)NUnit 2.6.3binnunit-console-x86.exe"
# look through all subdirectories of the source folder and get any unit test assemblies. To avoid duplicates, only use the assemblies in the Debug folder
[array]$files = get-childitem $sourceDirectory -include $fileFilters -recurse | select -expand FullName | where {$_ -like $filterText}
foreach ($file in $files)
{
$cFiles = $cFiles + $file + " "
}
# set all arguments and execute the unit console
$argumentList = @("$cFiles", "/framework:net-4.5", "/xml=UnitTestResults.xml")
$unitTestProcess = start-process -filepath $nUnitExecutable -argumentlist $argumentList -wait -nonewwindow -passthru -RedirectStandardOutput $nUnitLog -RedirectStandardError $nUnitErrorLog
if ($unitTestProcess.ExitCode -ne 0)
{
"Unit Test Process Exit Code: " + $unitTestProcess.ExitCode
"See $nUnitLog for more information or $nUnitErrorLog for any possible errors."
"Errors from NUnit Log File ($nUnitLog):"
Get-Content $nUnitLog | Write-Host
}
$exitCode = $unitTestProcess.ExitCode
exit $exitCode
El script es lo suficientemente robusto como para reutilizarlo para todos nuestros trabajos de compilación. Si no le gusta la ruta completa a la consola NUnit, siempre puede poner esa ubicación en su variable de entorno PATH.
Luego colocamos el archivo RunUnitTests.ps1 en nuestro servidor de compilación y usamos este comando por lotes:
powershell.exe -file "{full-path-to-script-direcory}RunUnitTests.ps1"
Para granjas Nunit 3 o superior:
-
Paso de construcción (línea de comandos de Windows)
"c:Program Files (x86)NUnit.orgnunit-consolenunit3-console.exe" c:AutomationTrainingCSharpSeleniumbinDebugtest.dll --result=TestR.xml;format=nunit2
-
Paso posterior para la publicación de informes de Nunit, solo muestra el archivo de resultados de la prueba en el directorio del espacio de trabajo de Jenkins, no en su proyecto:
TestR.xml
Necesitamos hacer los resultados de la prueba en formato nunit2 porque ahora el complemento Jenkins Nunit no reconoce el formato de resultados Nunit3. Además, el formato de cadena de opciones es diferente:
--result=TestR.xml;format=nunit2
NO
/xml=nunit-result.xml