Необходимо реализовать индивидуальные респонденты Fitnesse - PullRequest
2 голосов
/ 14 января 2010

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

Ответы [ 3 ]

1 голос
/ 15 января 2010

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

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

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

Проблема с этим подходом RESTful для того, что вы хотите сделать, состоит в том, что он требует, чтобы вы завернули выполнение FitNesse; Это означает, что если вы хотите, чтобы пользователи могли запускать тесты с помощью обычной кнопки «Перейти к Wiki-и-нажать-The-Test», в этом случае результаты не будут отправляться в вашу систему. Как вы ускользнули, решение этой проблемы, похоже, осуществляется с помощью пользовательских ответчиков.

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

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

Респонденты = test: your.package.TestResponder, набор: your.package.SuiteResponder

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

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

0 голосов
/ 15 января 2010

На самом деле, я не думаю, что вам вообще нужен специальный ответчик. Когда вы используете интерфейс служб restful для запуска пакета, вы получаете блок 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, который вы видите выше, на самом деле является форматом suiteHistory, а не стандартным XML, который вы получаете обратно, когда вызываете пакет напрямую. Общий формат тот же).

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

0 голосов
/ 15 января 2010

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

...