Мне пришлось пройти несколько шагов, чтобы наконец заставить работать PartCover при вызове его из сценария NAnt. Я собрал здесь все, что должен был сделать, для удобства других; Обратите внимание, что на некоторые из этих вопросов уже ответили другие, но я потратил массу времени, чтобы собрать все воедино.
Во-первых, как здесь сказано в другом месте, если ваша ОС 64-разрядная, вам необходимо запустить [самый последний Windows SDK] \ bin \ CorFlags.exe [каталог установки PartCover] \ PartCover.exe / 32BIT + / Force
Это однократный шаг после установки PartCover. Он изменит исполняемый файл и предупредит вас, что сборку необходимо будет повторно подписать, но я этого не делал, и она (в конечном итоге) сработала нормально. Обратите внимание, что хотя похоже, что CorFlags не выполнил то, что вы просили, и предупредил вас о подписании, он изменил .exe, он просто не указывает на это явно.
Затем, опять же, если ваша ОС 64-разрядная и вы используете NUnit (или другой тестовый exe) с PartCover, вам нужно будет вызвать версию, явно скомпилированную для x86. В случае NUnit это будет nunit-console-x86.exe. Вызов nunit-console.exe просто зависал для меня на неопределенное время после выполнения работы и не возвращался к приглашению.
Далее, как также ответили в другом месте здесь, PartCover 2.3, сборка для разработчиков, молча выходила из строя даже после запуска на ней CorFlags. Однако 2.2 сработала.
Затем, когда вызывается PartCover.exe, синтаксис аргументов - имя-аргумента ... и НЕ - = имя-аргумента (т.е. Документы PartCover, кажется, идут в обоих направлениях, но знак равенства просто не работает для меня.
После вышесказанного PartCover наконец-то заработал из командной строки. Я использовал файл настроек (вы можете использовать приложение пользовательского интерфейса браузера PartCover для сохранения файла настроек, который затем можно использовать из командной строки), так что единственными аргументами, которые я указал, были полный путь к файлу настроек и файл выходного отчета. имя полный путь.
Это все еще не работало при вызове из сценария NAnt, поэтому я наконец понял, что значения arg должны быть заключены в кавычки ... и использовать токены в кодировке HTML для кавычек. Таким образом...
Нет выдержки:
<property name="PartCoverExePath" value="c:\Program Files (x86)\PartCover .NET 2\PartCover.exe" />
<property name="PartCoverWorkPath" value="c:\Projects\MyProject\trunk\CI\" />
<property name="PartCoverSettingsFileName" value="PartCover.Settings.xml" />
<property name="PartCoverReportFileName" value="PartCover.Report.xml" />
<target name="MyTarget">
<exec program="${PartCoverExePath}">
<arg value="--settings "${PartCoverWorkPath}${PartCoverSettingsFileName}"" />
<arg value="--output "${PartCoverWorkPath}${PartCoverReportFileName}"" />
</exec>
</target>
И файл настроек PartCover:
<PartCoverSettings>
<Target>C:\CI\Binaries\NUnit2.5.2\bin\net-2.0\nunit-console-x86.exe</Target>
<TargetWorkDir>c:\Projects\MyProject\trunk\MyProject.Test\bin\Debug</TargetWorkDir>
<TargetArgs>MyProject.Test.dll</TargetArgs>
<Rule>+[*]*</Rule>
<Rule>-[log4net*]*</Rule>
<Rule>-[nunit*]*</Rule>
<Rule>-[MyProject.Test*]*</Rule>
</PartCoverSettings>
Фух! Надеюсь, это избавит кого-нибудь от головной боли, которая у меня была.
person
pelazem
schedule
14.12.2009