Domanda

Come parte di alcune costruire automazione di esecuzione di test xUnit.net con MSBuild , sto correndo in un caso in cui ho bisogno di loop su un lotto di oggetti.

All'interno del ciclo, ho bisogno di rilevare se un'iterazione fallito, ma Voglio continuare l'esecuzione a prescindere. Poi, dopo il bit raggruppati, ho bisogno di sapere se uno o più errori si sono verificati al fine di segnalare il risultato di TeamBuild.

IOW, in pseudocodice:

Task Name=RunTests
  CreateItems
  ForEach item CallTarget Target=RunTest ContinueOnError=true
  CombineNUnitResults
  Report success/failure

Task Name=RunTest
   XUnit item

Spero che questo può essere raggiunto senza un compito particolare (o hacking del xunit.net compito MSBuild come ha fatto Jonne). (Ma disposti a usare le attività MSBuild comunitari o DSC)

E @BradWilson: io questo è isnt possibile fare in modo pulito, sarò alla ricerca di un cambiamento di Jonne a la il compito NUnit per rendere anche nel compito xUnit

Vedi anche: Come faccio a ottenere team Build per mostrare i risultati dei test e la copertura per la suite di test xUnit.net?

È stato utile?

Soluzione

Vai afferrare 1.5 Beta. Abbiamo risolto questo con l'introduzione del parametro di uscita ExitCode al nostro xUnit compito MSBuild!

http://xunit.codeplex.com/Release/ProjectReleases.aspx

Altri suggerimenti

Questo è quello che facciamo:

<NUnit Assemblies="@(TestAssemblies)"
    ToolPath="$(NUnitPath)"
    WorkingDirectory="%(TestAssemblies.RootDir)%(TestAssemblies.Directory)"
    OutputXmlFile="@(TestAssemblies->'%(FullPath).$(NUnitFile)')"
    Condition="'@(TestAssemblies)' != ''"
    ExcludeCategory="$(ExcludeNUnitCategories)"
    ContinueOnError="true">
  <Output TaskParameter="ExitCode" ItemName="NUnitExitCodes"/>
</NUnit>

<Error Text="Test error(s) occured" Code="%(NUnitExitCodes.Identity)" Condition=" '%(NUnitExitCodes.Identity)' != '0' And '@(TestAssemblies)' != ''"/>

Questo verrà eseguito tutti i test di unità a prescindere dal fallimento, ma non riuscirà, dopo tutto sono stati eseguiti se ci fossero errori. Si noti ContinueOnError="true" consentire loro tutti corrono e l'errore alle verifiche finali per vedere se qualcuno di loro non è riuscito (in NUnit 0 indica il successo, tutto il resto è un fallimento).

Nota: questo sta usando il compito MSBuildCommunityTasks NUnit, ma se si sta usando solo exec con l'exe NUnit, è possibile ottenere lo stesso effetto. L'uscita "ExitCode" è comune a qualsiasi compito che eredita da ToolTask.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top