2010-01-14 3 views
2

Я считаю, что мне нужно внедрять заказчиков Fitnesse для клиентов, но не нашло большого успеха в моих исследованиях/попытках выполнить эту работу. Идея заключается в том, что у клиента будут наборы тестов, написанных в Fitnesse, но результаты будут опубликованы в их базе данных через веб-службу в их локальной интрасети. Мы хотели бы либо вызвать тест через URL-адрес в RESTful способом, либо вызвать пользовательский ответчик через другую кнопку на странице Fitnesse. В идеале это приведет к тестированию, сбору и анализу результатов, а затем опубликует через веб-службу. Я надеялся, что я могу получить некоторые идеи/подсказки относительно того, как это произошло, потому что я нахожусь на своем пути. @ _ @ Любая помощь будет принята с благодарностью! Благодаря!Необходимость внедрения пользовательских ответчиков Fitnesse

+0

FitNesse: http://en.wikipedia.org/wiki/FitNesse – trashgod

ответ

1

Я исследовал то же самое, и это то, что я считаю так ...

Вы можете вызвать любой тест FitNesse в RESTful поместье. Например. Чтобы выполнить тест и получить результаты в XML: http://myHost:myPort/MyWikiPage?responder=test&format=xml.

См. Страницу FitNesse FitNesse.UserGuide.RestfulServices для получения дополнительной информации об взаимодействии RESTfully с FitNesse.

Проблема с этим подходом RESTful для того, что вы хотите сделать, заключается в том, что он требует, чтобы вы завернули выполнение FitNesse; это означает, что если вы хотите, чтобы пользователи могли запускать тесты через обычную кнопку Go-To-The-Wiki-And-Press-The-Test, в этом случае в вашу систему не будет отправлено никаких результатов. По мере того, как вы ускользали, решение этой проблемы, по-видимому, происходит через пользовательских ответчиков.

Я считаю, что ответ заключается в том, чтобы продлить ответчик FitNesse Test (и ответчик Suite). Если вы можете найти в существующем исходном коде ответчика, где доступны результаты, тогда вы должны переопределить этот метод, чтобы дополнительно обработать результаты, но вам нужно отправить их и отправить их во внешнюю систему.

Респонденты должны быть зарегистрированы с FitNesse. Это делается через файл с именем plugin.properties (в том же месте, что и fitnesse.jar). Дополнительную информацию см. На странице FitNesse FitNesse.UserGuide.PluginUsage. Я предполагаю, что FitNesse позволяет по умолчанию респондентам быть перекрыты, поэтому ваше определение в plugin.properties будет выглядеть примерно так:

ответчики = тест: your.package.TestResponder, люкс: your.package.SuiteResponder

Одна вещь, о которой нужно подумать, - это то, хотите ли вы всегда получать результаты, отправленные в вашу внешнюю систему. Например, когда разрабатываются тесты, не всегда имеет смысл загромождать репозиторий результатов. Возможно, вы действительно хотите отправить результаты, когда тесты выполняются как часть регрессии. Эти факторы могут диктовать то, что вы намереваетесь сделать, например добавить еще одну кнопку: «Проверить &« Отправить результаты »или развернуть своих заказчиков в системах, в которых вы регрессируете ваши тесты, или создать свойство, которое вы установили в тесте, для« Отправить » Результаты при запуске ".

Мне было бы интересно узнать, в какую сторону вы идете; и если вы получите ответчика на работу, я бы не прочь узнать ваше решение. :)

0

У меня также были проблемы с этим, больше из-за того, что только что получил Fitnesse, чтобы запустить RESTfully из командной строки в Powershell, я могу запустить URL-адрес напрямую и получить результаты с помощью PowerShell, но при использовании REST я могу " t даже получить Powershell для подключения. Если у вас есть механизм, чтобы запустить это, мне было бы интересно посмотреть, как вы можете это сделать, но если все, что вы хотите, это способ запускать сценарии и получать результаты, Powershell может это сделать, и вы можете использовать его для подталкивания результатов к если вам нужно.

0

На самом деле, я не думаю, что вам нужен особый ответчик вообще.При использовании интерфейса успокоительные услуг для запуска набора, вы получите обратно блок XML, подобный следующему:

<?xml version="1.0"?> 
    <suiteResults> 
     <FitNesseVersion>v20100103</FitNesseVersion> 
     <rootPath>MgmtSuite</rootPath> 
     <pageHistoryReference> 
     <name>FrontPage.MgmtSuite.GroupTest</name> 
     <date>01/07/2010 09:21:46</date> 
     <pageHistoryLink>FrontPage.MgmtSuite.GroupTest?pageHistory&amp;resultDate=20100107092146</pageHistoryLink> 
     <counts> 
      <right>1</right> 
      <wrong>1</wrong> 
      <ignores>110</ignores> 
      <exceptions>3</exceptions> 
     </counts> 
     </pageHistoryReference> 
     <pageHistoryReference> 
     <name>FrontPage.MgmtSuite.SchedulesTest</name> 
     <date>01/07/2010 09:22:07</date> 
     <pageHistoryLink>FrontPage.MgmtSuite.SchedulesTest?pageHistory&amp;resultDate=20100107092207</pageHistoryLink> 
     <counts> 
      <right>1</right> 
      <wrong>1</wrong> 
      <ignores>344</ignores> 
      <exceptions>7</exceptions> 
     </counts> 
     </pageHistoryReference> 
     <finalCounts> 
     <right>0</right> 
     <wrong>2</wrong> 
     <ignores>0</ignores> 
     <exceptions>0</exceptions> 
     </finalCounts> 

    </suiteResults> 

Результатов люкса содержит каждый тест, который был запущен, и краткое описание каждого теста. Если вы возьмете этот XML-документ, вы сможете пройти через каждый тест и получить ссылку на историю страниц, которую вы можете использовать для запроса файла истории для этого конкретного теста. Вы можете указать либо XML, либо HTML в качестве вывода, принять этот результат и сохранить его.

(обратите внимание, что XML, который вы видите выше, на самом деле представляет собой форматHistory вместо стандартного XML, который вы получаете, когда вы вызываете пакет напрямую. Общий формат тот же).

Существует история о Pivotal Tracker, где требуется функциональность, чтобы иметь возможность запросить последний тест или набор. Не уверен, когда это будет готово, но на самом деле вам это не понадобится.