2009-09-22 2 views
0

Я пытаюсь заставить Team City создать мое .NET-решение и запустить мои тесты nUnit.Как вызвать цель тестирования объекта в проекте из проекта «Решение»

Я знаю, что могу изменять отдельные проекты и говорить, что они всегда запускают модульные тесты. I не хочу, чтобы модульные тесты запускались, когда я нажимаю «строить» в визуальной студии, но я хочу, чтобы модульные тесты запускались, когда Team City запускает задачу msbuild.

Я пробовал «msbuild solutionname.sln» и дал команде город цели «BUILD» и мой пользовательский тег сборки «TEST». Однако msbuild не может найти какую-либо указанную цель при вызове решения sln. Так, я побежал MSBuild преобразовать мое решение в проект, который имеет цель, как это:

<Target Name="Build"> 
    <MSBuild Projects="@(BuildLevel0)" > 
    </Target> 

я наивно думал, что я мог бы написать новую задачу так:

<Target Name="BuildAndTest"> 
    <CallTarget Targets="Build"/> <!-- This builds everything in solution --> 
    <CallTarget Targets="Test"/> <!-- DOES NOT WORK. This target exists in project that gets built by this solution --> 
</Target> 

NUnit мишень выглядит следующим образом:

<Target Name="Test" DependsOnTargets="Build" Condition=" '$(Configuration)' == 'Release'"> 
    <NUnit Assemblies="$(OutputPath)\Tsa.BaseTest.dll" ContinueOnError="false" ToolPath="C:\Program Files\NUnit 2.5.2\bin\net-2.0\" DisableShadowCopy="true" OutputXmlFile="$(OutputPath)\nunit-results.xml" /> 
    </Target> 

Как вы можете видеть, он ссылается OutputPath, который только проект знает - решение не имеет ссылку на $ OutputPath, иначе я бы J ust поставил все тестовые цели в «проект решения».

Любые предложения о том, как я могу заставить это работать?

ответ

0

Это то, что наконец-то сработало. Он игнорируется визуальной студией, msbuild будет правильно запускать этот раздел, а также город команды, хотя он заменяет Target своей собственной средой выполнения (согласно журналу сборки).

TeamCity будет «автоматически» запускать nunit-тесты и отображать результаты только в том смысле, что он будет делать это после ручного редактирования файла msbuild, выполняя многочисленные ручные тики и указывая TeamCity, где каждая сборка есть и где каждый выходной файл ,

<Project (snip) DefaultTargets="BuildAndTest" (snip)> 
<Target Name="BuildAndTest"> 
    <CallTarget Targets="Build" /> 
    <CallTarget Targets="TestBase" /> 
</Target> 

    <Target Name="TestBase" DependsOnTargets="Build"> 
    <NUnit Assemblies="Tsa.BaseTest\bin\RELEASE\Tsa.BaseTest.dll" ContinueOnError="false" ToolPath="C:\Program Files\NUnit 2.5.2\bin\net-2.0\" DisableShadowCopy="true" OutputXmlFile="$(SolutionDir)\Tsa.BaseTest\bin\RELEASE\nunit-results.xml" /> 
    </Target> 
    </Target> 
</Project> 
1

Думаю, вы делаете это намного сложнее, чем нужно. TeamCity имеет встроенную поддержку для запуска модульных тестов NUnit после сборки - вам вообще не нужно изменять файл MSBuild. Просто настройте конфигурацию сборки (я думаю, что она находится под Runner), чтобы указать версию NUnit и какие сборки являются тестовыми сборками.

ПРИМЕЧАНИЕ. Я проверил, и мы имеем это под Runner: sln2008 (раздел NUnit Test Settings) в TeamCity Enterprise версии 4.5.4, но я ничего не вижу на сайте JetBrains, в котором говорится, что он специфичен для Enterprise. Однако может потребоваться обновление версии. См. TeamCity Testing Frameworks.

+0

Я не уверен, что это точно. Я использую 4.5.2 Professional Edition. Страница может обнаруживать вывод nunit (раздел обработки отчетов XML), но Team City сам по себе не может/не будет вызывать вызов nunit для создания такого вывода. И эта версия не имеет текстового поля для меня, чтобы перечислять тестовые сборки. – MatthewMartin

+0

@Matthew - только что проверили на работе. Мы запускаем версию 4.5.4 TeamCity Enterprise. В Runner: sln2008 У меня есть NUnit Test Settings; под этим я могу установить тесты запуска и ввести пути для тестирования сборок. Есть еще несколько вариантов. – TrueWill

Смежные вопросы