Как интегрировать MSpec с MS Build?

Несколько дней назад я смотрел скринкаст BDD от Роб Конери. В видео он показал, как использовать MSpec, так что я скачал его и поиграл с битами. Сейчас я хочу интегрировать MSpec с MS Build, но я не знаю, как... Я использую командную сборку TFS в качестве сервера CI. Не могли бы вы помочь мне интегрировать MSpec с MSBuild?

Спасибо!


person Pavel Nikolov    schedule 02.06.2009    source источник


Ответы (1)


На данный момент самый простой способ - просто выполнить его.

 <Target Name="RunSpecs">
    <PropertyGroup>
      <MSpecCommand>
        lib\machine\specifications\Machine.Specifications.ConsoleRunner.exe $(AdditionalSettings) path\to\your\project\bin\Debug\Your.Project.Specs.dll path\to\your\other\project\bin\Debug\Your.Other.Project.dll 
      </MSpecCommand>
    </PropertyGroup>
    <Message Importance="high" Text="Running Specs with this command: $(MSpecCommand)"/>
    <Exec Command="$(MSpecCommand)" />
  </Target>

Изменить: обратите внимание на дополнительные настройки, вы можете вызвать цель следующим образом:

    <MSBuild Projects="yourmsbuild.msbuild" Targets="RunSpecs" Properties="AdditionalSettings=-s -t -i &quot;web&quot; --html Specs\Specs.html"/>

Если вы передаете --teamcity в качестве аргумента, он выводит данные журнала, специфичные для teamcity, поэтому TeamCity будет отслеживать ваши тесты.

Machine.Specifications
Copyright (C) 2007, 2008

Usage: mspec-runner.exe [options] <assemblies>
Options:
  -i, --include     Executes all specifications in contexts with these comma delimited tags. Ex. -i "foo,bar,foo_bar"
  -x, --exclude     Exclude specifications in contexts with these comma delimited tags. Ex. -x "foo,bar,foo_bar"
  -t, --timeinfo    Shows time-related information in HTML output
  -s, --silent      Suppress console output
  --teamcity        Reporting for TeamCity CI integration.
  --html <PATH>     Outputs an HTML file(s) to path, one-per-assembly w/ index.html (if directory, otherwise all are in
one file)
  -h, --help        Shows this help message
person Aaron Jensen    schedule 02.06.2009
comment
Обратите внимание, что когда вы делаете это с NAnt, используйте arg line=assembly1 Assembly2, а не значение arg (иначе вы получите приятную ошибку, которая очень неочевидна) - person Neal; 20.10.2009