2015-12-02 14 views
7

Ho usato NUnit Runner in Atlassian Bamboo (ultima versione) con NUnit 2 ma dopo l'aggiornamento a NUnit 3 non funziona più. Sembra che qualcosa sia cambiato con la riga di comando in NUnit 3. Qualcuno sa come far funzionare NUnit 3 in Atlassian Bamboo? O gli sviluppatori NUnit potrebbero considerare la retrocompatibilità per questo cambiamento di rottura?Come eseguire NUnit Runner in Atlassian Bamboo con NUnit 3

ottengo il seguente errore:

Invalid argument: -xml=TestResults-Rev_02f5436a0a70cd539bd3b77218fb48cbe3262954-Build_12.xml

Grazie

+0

cerco di usare la mia variante qui descritta http://stackoverflow.com/questions/40087902/bamboo-nunit-parser-task-incorrectly-parses-the-results-from-nunit3-console-exe – Tatiana

risposta

1

Speriamo che la squadra Atlassian si aggiornerà di bambù per sostenere NUnit 3 presto. Suggerirei di inviare una richiesta con loro. Il team di NUnit sarà felice di aiutarli in caso di domande.

NUnit non supporterà la riga di comando compatibile di un backward, ma è probabile che Bamboo funzioni ora modificando l'attività di esecuzione del test.

Non ho usato Bamboo, ma su AppVeyor, abbiamo dovuto disabilitare il rilevamento automatico dei test e l'esecuzione, quindi anziché utilizzare l'attività NUnit integrata, eseguiamo direttamente la nuova console nunit3, passando gli assembly di test.

Se Bamboo analizza e visualizza i risultati del test, è possibile istruire NUnit 3 per produrre XML nel formato versione 2 con il comando --result=TestResults.xml;format=nunit2

1

Inoltre, FYI, l'opzione -xml è stato deprecato per 3 anni!

Suppongo che il bambù generi le opzioni da riga di comando per NUnit in base alle impostazioni fornite dall'utente. Poiché NUnit 3.0 è un così grande cambiamento rispetto alla serie v2, gli sviluppatori potrebbero volerlo considerare come un framework completamente nuovo. In effetti, il motore NUnit 3.0 fa esattamente questo, trattando NUnit V2 come una struttura "estranea" e utilizzando un driver speciale per eseguire i test.

7

La soluzione più semplice consiste nel creare un file bat che sostituisca l'argomento -xml in --result.

Creare un file bat nella directory runner di Nunit (per impostazione predefinita C: \ Programmi (x86) \ NUnit.org \ nunit-console) e copiare le righe in entrata.

@echo off 
SET "var=%*" 
CALL SET var=%%var:-xml=--result%% 
nunit3-console.exe %var%;format=nunit2 

Quindi utilizzare l'indirizzo del file bat come percorso eseguibile del runner Nunit.

+0

I sto ricevendo un errore dicendo che nunit3-console.exe non è un comando riconosciuto @Bashir – wintersolider

+1

Ci scusiamo per la risposta tardiva, se hai installato unità runner 3 dovresti avere nunit3-console.exe nella cartella di installazione (da default C: \ Program File (x86) \ NUnit.org \ nunit-console) e dovresti solo il file bat nella stessa cartella, quindi il file bat dovrebbe essere in grado di file nunit3-console.exe, dal modo in cui puoi provare a usare il percorso completo anche per nunit3-console.exe. – Bashir

+0

Inserisci virgolette attorno al comando se il percorso contiene spazi. L'ultima affermazione appare così: '"% ~ dp0nunit3-console.exe "% var%; format = nunit2' –

0

Si verifica questo problema poiché lo nunit-3 non utilizza più il flag -xml e viene sostituito da --result. Il corridore di nunit di bambù non è udpato e genera ancora la bandiera usata dalla vecchia unità.

Creare un file bat con il seguente contenuto. Invece di usare l'eseguibile nunit in bambù, usa il file bat.

@echo off 
SET projectvar=%1 
SET xmlvar=%2 
SET executable=C:\Program Files (x86)\NUnit-3.4.1\bin\nunit3-console.exe 
CALL SET xmlvar=%%xmlvar:-xml=--result%% 
SET outputvar=%3;format=nunit2 
SHIFT 
SHIFT 
SHIFT 
SET remvar=%1 
:loop 
SHIFT 
if [%1]==[] GOTO afterloop 
SET remvar=%remvar% %1 
GOTO loop 
:afterloop 
%executable% %projectvar% %xmlvar% %outputvar% %remvar%