Как вызвать цель модульного теста в проекте из проекта «решение» - PullRequest
0 голосов
/ 22 сентября 2009

Я пытаюсь заставить Team City создать свое решение .NET и запустить свои тесты nUnit.

Я знаю, что могу изменить отдельные проекты и сказать им, чтобы они всегда запускали модульные тесты. Я не хочу, чтобы модульные тесты запускались, когда я нажимаю "build" в visual studio, но я do хочу, чтобы модульные тесты запускались, когда Team City запускает задачу msbuild.

Я попробовал "msbuild solutionname.sln" и дал команде city цели "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>

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

  <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, иначе я бы просто поместил все тестовые цели в «проект решения».

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

Ответы [ 2 ]

1 голос
/ 23 сентября 2009

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

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

0 голосов
/ 23 сентября 2009

Это то, что, наконец, сработало. Visual Studio игнорирует его, msbuild будет правильно запускать этот раздел, а также Team City, хотя он заменяет 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...