Доброго времени суток.
Вот и завершилась, как уже кажется, безконечная череда праздников и все возвращается на “круги своя”. И как было обещано в предыдущем посте, в этот раз я поделюсь небольшими навыками с интеграции FitNesse в Maven build lifecycle.
На первый взгляд, мне так тоже казалось, что тут нет ничего сложного и все уже есть. Проштудировав документацию + internet на предмет наличия интеграции FitNesse с Maven, я кое что нашел. Тут доступен fitnesse-maven-plugin plugin для Maven, который должен обеспечить вас возможностью выполнять ваши FitNesse тесты и создавать репорты. Но что бы выполнить тесты, FitNesse сервер должен быть запущен. Для этих целей я подходящего ничего не нашел, к тому же это все должно происходить во время выполнения билда.
Для запуска FitNesse сервера я написал plugin для Maven, исходники можно найти тут. Далее привожу пример конфигурации плагина:
<plugin> <groupId>name.webdizz</groupId> <artifactId>maven-fitnesse-server</artifactId> <version>0.0.1-SNAPSHOT</version> <executions> <execution> <phase>pre-integration-test</phase> <id>start-fitnesse-server</id> <goals> <goal>start-server</goal> </goals> <configuration> <background>true</background> <port>9292</port> <baseDir>${basedir}/src/test</baseDir> <root>fitnesse</root> <omitUpdates>true</omitUpdates> </configuration> </execution> </executions> <dependencies> <dependency> <groupId>org.fitnesse</groupId> <artifactId>fitnesse</artifactId> <version>20091121</version> </dependency> <dependency> <!-- Тут идут ваши зависимости - т.е. фитнесс-тесты --> </dependency> </dependencies> </plugin>
Запуск сервера настроен на pre-integration-test фазу, так как сами тесты выполняются в integration-test фазе.
Со стартом мы определились, теперь же нужно разобраться с запуском непосредственно тестов. Привожу свою конфигурацию плагина для выполнения тестов.
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>fitnesse-maven-plugin</artifactId> <version>1.0-custom</version> <configuration> <classPathProvider>maven</classPathProvider> <!-- FitNesse servers list --> <fitnesses> <fitnesse> <hostName>localhost</hostName> <port>9292</port> <!-- The should be a suite to run all tests --> <pageName>FitNesse.UserGuide.SlIm.ScriptTable</pageName> <type>test</type> </fitnesse> </fitnesses> </configuration> <executions> <execution> <id>integration-test-fitnesse</id> <phase>integration-test</phase> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin>
Но на этапе запуска возникла проблема с выполнением тестов. Как оказалось fitnesse-maven-plugin немного устарел – последнее обновление было аж “04/06/2008″ и запуск тестов валился с ошибкой неверных коммандных атрибутов. Проблема была с параметром “-html” – версия FitNesse, которую я использовал, уже не поддерживала такой аттрибут. Пришлось править код – заменил этот “-html” на “-xml” – заработало
.
На этом мне еще не удалось выполнить тест, так как появилась новая проблема – результат выполнения тестов сохранялся в виде XML, плагин же ожидает его в HTML. В итоге пришлось еще немного допилить пару классов, как результат – все заработало. Модифицированные исходники можно взять отсюда.
Теперь, используя стандартную команду
mvn clean installбудет стартовать FitNesse сервер и выполняться тесты.
На этом все, спасибо за внимание и удачного тестирования…
