2010-10-04 102 views
1

En arrière-plan: Je tente d'implémenter l'intégration de Cruisecontrol (2.8.4), MSBuild et MSTest sur mon projet actuel (.Net 4.0 et VS 2010). J'utilise MSBuild pour construire ma solution et a ajouté un MSTest comme AfterBuild cible dans mes fichiers .csproj pour exécuter mes tests unitaires:MSTest non exécuté lors de l'exécution par Cruisecontrol schedule

<Target Name="AfterBuild" DependsOnTargets="GetTestAssemblies" > 
<Message Text="Normal Test" /> 
<Exec Command="del $(MSTestResultsFile)" ContinueOnError="true" /> 
<Exec WorkingDirectory="$(WorkingDir)" Command="MsTest @(TestAssemblies->'%(TestContainerPrefix)%(FullPath)',' ') /noisolation /resultsfile:$(MSTestResultsFile)" /> 
<Message Text="Normal Test Done" /> 

J'ai configuré cruisecontrol.config utiliser MSBuild, à savoir :

<schedule interval="300"> 
    <exec command="cmd.exe" 
      workingdir="C:\CruiseControl\projects\Framework" 
      args="msbuild Solution.sln" /> 
</schedule> 

Quand je lance la construction de l'invite de commande par exemple: cmd.exe:

msbuild <projectname>.sln 

, la La solution et les projets se construisent correctement, les tests unitaires s'exécutent et sortent les résultats au /resultsfile:$(MSTestResultsFile) spécifié.

Mon problème est lorsque la commande dans la planification cruisecontrol est exécutée, la construction (MSBuild) a réussi, mais mon MSTest: /resultsfile:$(MSTestResultsFile) est vide. Il semble que les tests unitaires n'aient pas été exécutés du tout.

Je ne sais pas pourquoi cela se produit? Toute aide serait appréciée!

Répondre

0

Par la modification de configuration horaire cruisecontrol utiliser le msbuild.exe au lieu de cmd.exe a donné lieu à des tests unitaires en cours d'exécution

<schedule interval="300"> 
    <exec command="msbuild.exe" 
        workingdir="C:\Windows\Microsoft.NET\Framework\v4.0.30319" 
        args="C:\CruiseControl\projects\DTSFramework\DTS.Solution.sln" /> 
</schedule>