This is a mirror of official site: http://jasper-net.blogspot.com/

Встраиваем сбор Code Coverage в CruiseControl.NET

| Wednesday, February 9, 2011
Последнее время активно пропагандируется практика разработки программного обеспечения Test-Driven Development. Бесспорно, она очень полезна, но не всегда и не все ее применяют. Поэтому часть кода покрыта юнит-тестами, а часть остается непокрытой. Проследить за каждым проектом вручную, нормально написаны там тесты или нет, является практически невыполнимой задачей.
Недавно я задался вопросом, а как можно автоматизировать процесс сбора метрики, которая показывает процент покрытия кода тестами. Было решено встроить ее сбор в CruiseControl.NET. Естественно, что 100% покрытие не гарантирует отсутствие багов, но хотя бы показывает отношение разработчиков к написанию тестов.

В данной статье я не буду останавливаться на моментах касающихся настройки CruiseControl’а для сборки проектов и запуска юнит-тестов. Будут описаны шаги, которые позволят собрать необходимую информацию о покрытии кода и вывести ее на странице с тестами. Для написания юнит-тестов наша компания использует фреймворк от Microsoft – MSTest. Результаты работы с этим фреймворком и будут описываться в статье. Стоит заметить, что необходимым условием для встраивания покрытия кода является изначальная настройка CruiseControl'а для запуска тестов.

Насколько я знаю, CruiseControl имеет встроенные возможности по отображению данных собранных при помощи NCover. Но по причине того, что купить эту библиотеку у нас нет возможности, мы и пользуемся теми методами, которые есть.

Всё нижеописанное относится к проектам, написанным в Visual Studio 2010. Отличия с 2008 версией хоть и небольшие, но они есть.

Создание data.coverage файла на билд-сервере
Visual Studio позволяет настроить выполнение тестов таким образом, чтобы после прохождения всех тестов создавался файл, в котором будет храниться информация о покрытых участках кода. Называться этот файл будет data.coverage (хранится он в папке In с результатами прохождения тестов).
Эта настройка хранится в файле .testrunconfig вашего проекта. Через UI ее можно выставить следующим образом:

  1. Откройте ваш файл .testrunconfig
  2. Выберите пункт Data and Diagnostics
  3. Выставите флажок напротив Code Coverage и нажмите Configure
  4. Выберите библиотеку, для которой необходимо собирать покрытие
  5. Выключите флажок Instrument assemblies in place

После сохранения файла внутри него будет следующий текст:

<?xml version="1.0" encoding="UTF-8"?>
<TestSettings name="Local Test Run" id="de0d45b4-4fed-4acb-a663-2cfdf0ce4fd7" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
<Description>This is a default test run configuration for a local test run.</Description>
<Deployment enabled="false" />
<Execution>
 <Timeouts testTimeout="300000" />
 <TestTypeSpecific>
  <UnitTestRunConfig testTypeId="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b">
   <AssemblyResolution>
    <TestDirectory useLoadContext="true" />
   </AssemblyResolution>
  </UnitTestRunConfig>
 </TestTypeSpecific>
 <AgentRule name="LocalMachineDefaultRole">

Read more: Habrahabr

Posted via email from Jasper-net

0 comments: