2011-10-04 12 views
5

Mam tempomat skonfigurowany z zadaniem do uruchomienia skryptu NAnt, który uruchamia pakiet MSTest. MSTest pozwala mi określić kategorie testowe, więc chcę określić "! Integration" (co oznacza "nie uruchamiaj testów integracji"). Skrypt My Nant działa poprawnie, gdy uruchamiam go z wiersza poleceń, ale gdy Cruise go uruchomi, dyrektywa "! Integration" jest zniekształcona - wyjście Cruise sugeruje wstawienie linii po "!" postać. Rezultat jest taki, że moje testy są uruchamiane, łącznie z testami integracyjnymi.Analiza tempomatu "!" znak w pliku NAnt

Wyciąg z ccnet.config:

<tasks> 
    <nant> 
    <executable>C:\nant\bin\nant.exe</executable> 
    <baseDirectory>C:\MyProject\BuildDirectory</baseDirectory> 
    <buildFile>MyProject.build</buildFile> 
    <targetList> 
     <target>CIServerBuild</target> 
    </targetList> 
    </nant> 
</tasks> 

Wyciąg z MyProject.build:

<target name="CIServerBuild"> 
     : 
    <call target="RunUnitTests" /> 
</target> 

<target name="RunUnitTests"> 
    <property name="TestCategories" value="!Integration" /> 
    <call target="RunMSTest" failonerror="true"/> 
</target> 

<target name="RunMSTest"> 
    <call target="BuildListOfTestContainers" failonerror="true"/> 
    <exec program="${MSTest.exe}" 
     commandline=" /category:&quot;${TestCategories}&quot; ${TestContainers} /resultsfile:${MSTest.ResultsFile} /nologo " 
    /> 
</target> 

Wyciąg z wyjściem Cruise: '!'

[exec] Starting 'C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe (/category:"! 
Integration" /testcontainer:C:\TaxWise\BuildDirectory\TaxWise\TaxWise.Data.Tests\bin\Debug\TaxWise.Data.Tests.dll /testcontainer:C:\TaxWise\BuildDirectory\TaxWise\TaxWise.Domain.Tests\bin\Debug\TaxWise.Domain.Tests.dll /testcontainer:C:\TaxWise\BuildDirectory\TaxWise\TaxWise.Infrastructure.Tests\bin\Debug\TaxWise.Infrastructure.Tests.dll /resultsfile:.\TestResults\UnitTests.trx /nologo)' 
in 'C:\TaxWise\BuildDirectory' 

próbowałem zastępując postać z

'&#33;' 

ale to nie miało znaczenia.

Jakieś pomysły, ktoś?

Odpowiedz

0

Tak, być może nie jest to spowodowane przez CC. Spróbuj ustawić verbose="True" w zadaniu <exec> i sprawdź protokół kompilacji. Pamiętaj, że to, co widzisz na stronie raportu, nie jest dokładnym wynikiem (zazwyczaj podlega zawijaniu linii i koalescencji białych znaków).

Może to zależy od miejsca uruchamiania skryptu, ukrytej zależności od właściwości kompilacji lub innych zmiennych środowiskowych. Możesz sprawdzić to drugie używając <exec program="cmd.exe" commandline="/c set" />. Do właściwości można użyć następującego skryptu:

<script language="C#" prefix="util" verbose="true"> 
    <code> 
     <![CDATA[ 
     public static void ScriptMain(Project project) 
     { 
      foreach (DictionaryEntry entry in new System.Collections.SortedList(project.Properties)) 
       Console.WriteLine("{0}={1}", entry.Key, entry.Value); 
     } 
     ]]> 
    </code> 
    </script>