#nunit #nant #task #ncover
Вопрос:
Есть ли какой — нибудь шанс получить эту работу? Я хочу, чтобы мои тесты выполнялись задачей nunit2 в NAnt. Кроме того, я хочу запустить NCover без повторного запуска тестов.
Ответ №1:
Я все понял. Вы меняете путь запуска NUnit на путь запуска TeamCity. Вот пример:
<mkdir dir="${build}/coverage" failonerror="false"/>
<!-- run the unit tests and generate code coverage -->
<property name="tools.dir.tmp" value="${tools.dir}"/>
<if test="${not path::is-path-rooted(tools.dir)}">
<property name="tools.dir.tmp" value="../../${tools.dir}"/>
</if>
<property name="nunitpath" value="${lib.dir}/${lib.nunit.basedir}/bin/nunit-console.exe"/>
<property name="nunitargs" value=""/>
<if test="${property::exists('teamcity.dotnet.nunitlauncher')}">
<property name="nunitpath" value="${teamcity.dotnet.nunitlauncher}"/>
<property name="nunitargs" value="v2.0 x86 NUnit-2.4.8"/>
</if>
<ncover program="${tools.dir.tmp}/${tools.ncover.basedir}/ncover.console.exe"
commandLineExe="${nunitpath}"
commandLineArgs="${nunitargs} ${proj.name.unix}.dll"
workingDirectory="${build}"
assemblyList="${proj.srcproj.name.unix}"
logFile="${build}/coverage/coverage.log"
excludeAttributes="System.CodeDom.Compiler.GeneratedCodeAttribute"
typeExclusionPatterns=".*?{.*?}.*?"
methodExclusionPatterns="get_.*?; set_.*?"
coverageFile="${build}/coverage/coverage.xml"
coverageHtmlDirectory="${build}/coverage/html/"
/>
Как вы можете видеть, у меня там есть некоторые из моих собственных переменных, но вы должны быть в состоянии понять, что происходит. Свойство, которое вас интересует, — teamcity.dotnet.nunitlauncher. Вы можете прочитать больше об этом здесь по адресу http://www.jetbrains.net/confluence/display/TCD4/TeamCity NUnit Тест Пусковая установка.
Ответ №2:
Почему бы NCover не запустить NUnit? Вы получаете точно такие же результаты теста. Кроме того, что именно вы пытаетесь измерить при запуске NCover вне тестов? Есть и другие способы найти устаревший или неиспользованный код.
Ответ №3:
Мне приходится делать то же самое. Я думаю, что лучшее, на что мы можем надеяться, — это открыть файл NUnit jar, который поставляется с TeamCity, и написать пользовательскую задачу, которая объединяет NUnit2 и NCover. Я бы хотел, чтобы это было не так, но задача NUnit2 не выдает никаких видимых результатов, поэтому TeamCity, очевидно, не считывает StdOut для результатов теста.