Написание теста для плагина Maven fitnesse

Я только что установил плагин fitnesse-launcher-maven-plugin с сайта uk.co.javahelp.fitnesse и вижу, что он работает нормально.

Теперь я хотел бы написать несколько тестов, чтобы они были просмотрены и выполнены во время сборки.

Мой файл pom.xml содержит следующий плагин:

  <profiles>
    <profile>
      <id>wiki</id>
      <build>
        <plugins>
          <plugin>
            <groupId>uk.co.javahelp.fitnesse</groupId>
            <artifactId>fitnesse-launcher-maven-plugin</artifactId>
            <version>1.4.2</version>
            <executions>
              <execution>
                <goals>
                  <goal>set-up</goal>
                  <goal>wiki</goal>
                  <goal>tear-down</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>auto</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>uk.co.javahelp.fitnesse</groupId>
            <artifactId>fitnesse-launcher-maven-plugin</artifactId>
            <configuration>
              <failIfNoTests>false</failIfNoTests>
            </configuration>
            <executions>
              <execution>
                <goals>
                  <goal>set-up</goal>
                  <goal>run-tests</goal>
                  <goal>tear-down</goal>
                  <goal>verify</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

Следуя документации веб-сайта плагина по адресу

http://fitnesse-launcher-maven-plugin.googlecode.com

Я также создал следующие каталоги и пустые (пока что) файлы:

stephane@stephane-ThinkPad-X301:toolbox> tree src/test/java/fitnesse/
src/test/java/fitnesse/
├── FirstTestSuite
│   ├── content.txt
│   ├── NestedSuite
│   │   ├── AnIndividualTest
│   │   │   ├── content.txt
│   │   │   └── properties.xml
│   │   ├── content.txt
│   │   └── properties.xml
│   ├── properties.xml
│   └── Setup
│       ├── content.txt
│       └── properties.xml
└── plugins.properties

Если запущена команда:

mvn verify -P wiki

тогда я могу видеть на

http://localhost:9123/

некоторые стандартные тесты Fitnesse, которые мне не принадлежат.

С другой стороны, если я выполню команду:

mvn verify

тогда не нужно выполнять никаких тестов:

[INFO] Executed tasks
[INFO] 
[INFO] --- fitnesse-launcher-maven-plugin:1.4.2:run-tests (default) @ toolbox ---
[INFO] ------------------------------------------------------------------------
[INFO] Setting FitNesse variable [maven.classpath] to [
!path /home/stephane/dev/java/projects/toolbox/target/test-classes
!path /home/stephane/dev/java/projects/toolbox/target/classes
!path /home/stephane/.m2/repository/org/fitnesse/fitnesse/20140201/fitnesse-20140201.jar
!path /home/stephane/.m2/repository/org/htmlparser/htmlparser/2.1/htmlparser-2.1.jar
!path /home/stephane/.m2/repository/org/htmlparser/htmllexer/2.1/htmllexer-2.1.jar
!path /home/stephane/.m2/repository/org/apache/velocity/velocity/1.7/velocity-1.7.jar
!path /home/stephane/.m2/repository/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar
!path /home/stephane/.m2/repository/commons-lang/commons-lang/2.4/commons-lang-2.4.jar
!path /home/stephane/.m2/repository/org/json/json/20090211/json-20090211.jar
!path /home/stephane/.m2/repository/com/googlecode/java-diff-utils/diffutils/1.2.1/diffutils-1.2.1.jar
!path /home/stephane/.m2/repository/org/eclipse/jgit/org.eclipse.jgit/2.3.1.201302201838-r/org.eclipse.jgit-2.3.1.201302201838-r.jar
!path /home/stephane/.m2/repository/com/jcraft/jsch/0.1.46/jsch-0.1.46.jar
]
[INFO] Setting FitNesse variable [org.springframework.version] to [4.2.0.RELEASE]
[INFO] Setting FitNesse variable [java.version] to [1.8.0_60]
[INFO] Setting FitNesse variable [org.springframework.security.version] to [3.2.5.RELEASE]
[INFO] Setting FitNesse variable [project.build.sourceEncoding] to [UTF-8]
[INFO] Setting FitNesse variable [artifact] to [toolbox]
[INFO] Setting FitNesse variable [version] to [0.0.1-SNAPSHOT]
[INFO] Setting FitNesse variable [basedir] to [/home/stephane/dev/java/projects/toolbox]
[INFO] ------------------------------------------------------------------------
[WARNING] No FitNesse Suites or Tests to run! (Set -Dfitnesse.fitnesse.failIfNoTests=false to ignore.)
[INFO] 0 right, 0 wrong, 0 ignored, 0 exceptions
[INFO] 
[INFO] --- fitnesse-launcher-maven-plugin:1.4.2:tear-down (default) @ toolbox ---
[INFO] 
[INFO] --- fitnesse-launcher-maven-plugin:1.4.2:verify (default) @ toolbox ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8.061 s
[INFO] Finished at: 2015-10-26T10:25:17+01:00
[INFO] Final Memory: 19M/205M
[INFO] ------------------------------------------------------------------------
stephane@stephane-ThinkPad-X301:toolbox>

Я хотел бы написать очень простой Java-тест с приспособлением Slim, скажем, чтобы проверить, что мой метод add (2, 2) бизнес-логики возвращает 4.

В каком файле должен быть мой вики-тест? В каком файле должен быть мой прибор? Как сообщить Fitnesse о выполнении моего теста?

ОБНОВЛЕНИЕ: Мой пример приспособления:

public class ExampleFixture {

    private String value;
    private String result;

    public ExampleFixture() {
    }

    public void execute() {
        if (value != null) {
            result = Common.trimSpaces(value);
        }
    }

    public void setValue(String value) {
        this.value = value;
    }

    public String getResult() {
        return result;
    }

}

и его содержание:

|Example fixture|
|value|result?|
|some space|somespace|

Последняя проблема, касающаяся того, что результат [0] не был найден, была связана с результатом чтения моего получателя вместо getResult в содержимом фикстуры, которое теперь гласит: | Пример фикстуры | | значение | getResult? | | некоторое пространство | somespace |


person Stephane    schedule 25.10.2015    source источник
comment
Что вы видите на http://localhost:9123/FirstTestSuite?   -  person Stewart    schedule 26.10.2015
comment
Привет, Стюарт, извини за поздний ответ, на этой неделе я начал новую работу. Итак, я запустил сборку с помощью команды: mvn verify -P wiki, и в браузере я вижу: Contents: SlimTest TestExample, и если я нажму на TestExample, то вижу: See ... example fixture value result? some space somespace. Затем я щелкнул указанную выше кнопку «Тест», и там было написано: Tests Executed OK и See: example fixture: <strong>Bad table! Table has 3 header columns, but row 2 only has 2 columns.</strong>.   -  person Stephane    schedule 08.11.2015
comment
Я удалил лишнюю трубу, которой было слишком много, и она пошла дальше :-) Теперь она говорит: Method result[0] not found in com.thalasoft.fitnesse.ExampleFixture. Интересно, что это за метод, подобный массиву, который он ищет ... Я обновил свой вопрос, чтобы отобразить класс фикстуры.   -  person Stephane    schedule 08.11.2015
comment
Я изменил метод получения результата с результата на getResult в описании содержимого фикстуры, и результат получился некорректным: value getResult? some space somespace.   -  person Stephane    schedule 08.11.2015
comment
Автоматическое тестирование теперь тоже работает нормально. При выполнении команды mvn verify запускается фитнес-тест, при неудачном (пока специально) тесте отображается: [INFO] 0 right, 1 wrong, 0 ignored, 0 exceptions. Теперь мне остается только попытаться получить сбой сборки Maven, если тест на физическую форму не прошел.   -  person Stephane    schedule 08.11.2015
comment
Вы указали <goal>verify</goal> в конфигурации плагина, как это предлагается в документации?   -  person Stewart    schedule 08.11.2015
comment
Я думаю, что сделал (как видно из моего вопроса), поскольку я основывал свой тест на этом fitnesse-launcher-maven-plugin.googlecode.com/svn/maven/site/   -  person Stephane    schedule 09.11.2015
comment
Любопытный. Затем сборка должна завершиться ошибкой, когда 1 или несколько тестов не пройдут ...   -  person Stewart    schedule 09.11.2015


Ответы (1)


Вы разместили свой фитнес-код под src/test/java/fitnesse/

Фактическое расположение по умолчанию: src/test/fitnesse/ (Удалите java)

В качестве альтернативы в вашем pom.xml настройте каталог, который вы хотите использовать:

<testResourceDirectory>src/test/fitnesse</testResourceDirectory>

См. Документы Конфигурация подключаемого модуля.


Обновлять:

Поскольку googlecode был списан, сайт архива возвращает 404 для некоторых ссылок. Когда-нибудь я смогу это исправить. Между тем проект доступен на Github. Если вы запустите maven site и получите доступ к созданному HTML в браузере, вся документация должна быть завершена.

person Stewart    schedule 26.10.2015
comment
Я только что заметил эту проблему с путями, просмотрев страницу localhost: 9123 / FirstTestSuite. Но теперь, после перемещения каталога fitnesse в его местоположение по умолчанию src / test / fitnesse, я перенаправляюсь на localhost: 9123 / root ? свойства. Похоже на страницу свойств, где я могу редактировать. Я также вижу ссылку на свой набор тестов. - person Stephane; 26.10.2015
comment
При выполнении команды mvn verify я получаю ответный код результата 200, но фатальная ошибка: [Неустранимая ошибка]: -1: -1: преждевременный конец файла. - person Stephane; 26.10.2015
comment
Никогда раньше не было такого поведения. Подходит ли вам проект java-example? (code.google.com/p/fitnesse-launcher-maven -plugin / wiki / Downloads) В качестве альтернативы, все, что я могу придумать, - это изучить properties.xml в каталоге FirstTestSuite и проверить документы / wiki FitNesse на наличие этих ошибок. Какой файл дает преждевременный конец? - person Stewart; 26.10.2015
comment
Вы знаете, где я могу найти хорошую документацию о том, как кодировать тест и его приспособление? Я нахожу только старые статьи в блогах. Я удивлен, что больше информации нет. - person Stephane; 26.10.2015
comment
Проект java-example содержит примеры тестов Slim и Fit. - person Stewart; 26.10.2015
comment
Это мой первый тест, и, как я уже сказал в вопросе, работа над ним продолжается :-) Надеюсь, вы не против. Мой файл src / test / fitnesse / FirstTestSuite / content.txt содержит:! Contents! * ›Setup | import | | например | *! ! 2 Мой первый тест | Дивизион | | числитель | знаменатель | частное? | | 10 | 2 | 5.0 | Но мой файл src / test / fitnesse / FirstTestSuite / properties.xml полностью пуст. Опять же, я был бы очень рад прочитать какой-нибудь ресурс, где объясняется, какие файлы и какой контент должны содержать. - person Stephane; 26.10.2015
comment
Изучите проект java-примера и, возможно, разместите новый вопрос о самом тестировании FitNesse? - person Stewart; 26.10.2015
comment
Да, я копирую это дерево проекта и его содержимое. Я не смотрю файл content.txt первого теста. Как я понимаю, сам прибор находится в ветке src / test / java / fitnesse? - person Stephane; 26.10.2015
comment
Нет, не src/test/java/fitnesse. Согласно моему ответу выше, просто src/test/fitnesse. (Если вы не настроили пом.) - person Stewart; 26.10.2015
comment
В примере проекта это сделано так. Значит, у вас будет java-файл фикстуры рядом с файлом content.txt каждого теста? - person Stephane; 26.10.2015
comment
Файл Java? Нет, файлы java помещаются src/test/java как обычно. Файлы классов попадут в путь к классам FitNesse. - person Stewart; 26.10.2015
comment
Если вы имеете в виду, что файлы java находятся в src/test/java/fitnesse/fit, ну, это src/test/java, а затем пакет java из fitnesse.fit - person Stewart; 26.10.2015
comment
Хорошо, тогда я перенесу свой прибор обратно в дерево src/test/java. - person Stephane; 26.10.2015
comment
Нормально ли иметь успешную сборку Maven, когда результаты теста говорят: 0 правильных, 1 неправильных, 0 игнорируемых, 9 исключений? Разве не лучше было бы провалить сборку? - person Stephane; 26.10.2015
comment
Я приближаюсь, но все еще получаю ИНФОРМАЦИЮ: FirstTestSuite.SlimTest.TestExample r 0 w 0 0 0,152 секунды [ИНФОРМАЦИЯ] 0 правильно, 0 неправильно, 0 игнорируется, 0 исключений Я полагаю, я должен получить 1 правильно, поскольку у меня есть один тест. - person Stephane; 26.10.2015
comment
Цель verify действительно состоит в том, чтобы не выполнить сборку, если один или несколько тестов не пройдут. TBH, это выходит за рамки простых вопросов и ответов по Stackoverflow. - person Stewart; 26.10.2015
comment
Спасибо за вашу поддержку бога! Я найду свой путь :-) - person Stephane; 26.10.2015
comment
Предоставленная ссылка на fitness-launcher-maven-plugin не работает. - person Avinash Anand; 27.12.2018
comment
@AvinashAnand Да, Googlecode списан. Код скопирован на github. Поменял ссылку на архив. - person Stewart; 27.12.2018