2012-01-17 4 views
4

У нас есть 3 DLL модульных тестов, для выполнения которых требуется 1 час (30, 20 и 10 минут каждый). Ran одновременно, он занимает не более 30 минут.CC.NET: распараллеливать тесты NUnit

Вы знаете, если это возможно, и как распараллелить выполнение NUnit в CC.Net или "внутри" NUnit процесс:

  • запустить 3 DLL в то же время

или,

  • запускать множество тестов в 1 DLL в качестве параллельных процессов

ответ

0

Вы можете использовать parallel tasks для параллельного запуска нескольких процессов NUnit.

1

Мы закончили параллельный запуск наших тестов через MSBuild, а затем слияние результирующие (несколько) тестовых файлов результатов в один файл для упрощения отчетов - CC.Net с радостью сделает это для вас на сервере сборки, но разработчикам тоже приятно иметь значимые результаты на своих собственных машинах.

Пример кода выглядит примерно так:

<Target Name="UnitTestDll"> 
    <Message Text="Testing $(NUnitFile)" /> 
    <ItemGroup> 
    <ThisDll Include="$(NUnitFile)"/> 
    </ItemGroup> 
    <NUnit ToolPath="$(NUnitFolder)" Assemblies="@(ThisDll)" OutputXmlFile="$(TestResultsDir)\%(ThisDll.FileName)-test-results.xml" ExcludeCategory="Integration,IntegrationTest,IntegrationsTest,IntegrationTests,IntegrationsTests,Integration Test,Integration Tests,Integrations Tests,Approval Tests" ContinueOnError="true" /> 
</Target> 

<Target Name="UnitTest" DependsOnTargets="Clean;CompileAndPackage"> 
    <Message Text="Run all tests in Solution $(SolutionFileName)" /> 
    <CreateItem Include="$(SolutionFolder)**\bin\$(configuration)\**\*.Tests.dll" Exclude="$(SolutionFolder)\NuGet**;$(SolutionFolder)**\obj\**\*.Tests.dll;$(SolutionFolder)**\pnunit.tests.dll"> 
    <Output TaskParameter="Include" ItemName="NUnitFiles" /> 
    </CreateItem> 
    <ItemGroup> 
    <TempProjects Include="$(MSBuildProjectFile)"> 
     <Properties>NUnitFile=%(NUnitFiles.Identity)</Properties> 
    </TempProjects> 
    </ItemGroup> 
    <RemoveDir Directories="$(TestResultsDir)" Condition = "Exists('$(TestResultsDir)')"/> 
    <MakeDir Directories="$(TestResultsDir)"/> 

    <MSBuild Projects="@(TempProjects)" BuildInParallel="true" Targets="UnitTestDll" /> 

    <ItemGroup> 
    <ResultsFiles Include="$(TestResultsDir)\*.xml" /> 
    </ItemGroup> 

    <NUnitMergeTask FilesToBeMerged="@(ResultsFiles)" OutputPath="$(MSBuildProjectDirectory)\TestResult.xml" /> 
</Target> 
Смежные вопросы