Альтернатива для вложенных SuiteSetUps, которая поддерживает порядок - PullRequest
0 голосов
/ 14 июня 2019

У нас есть проект FitNesse / HSAC с кучей тестов, которые структурированы по существу следующим образом:

  • TopSuite
    • SubSuite1
      • [тесты]
    • SubSuite2
      • [тесты]
      • SuiteSetUp
    • SubSuite3
      • [тесты]
    • SuiteSetUp

SuiteSetUp SubSuite2 выполняет особенно медленный GET-запрос, используя JsonHttpTest, и все тесты в SubSuite2 проверяют ответ этогозапрос.Мы решили выполнить запрос в SuiteSetUp, потому что FitNesse будет запускать его прямо перед соответствующими тестами во всех этих трех случаях:

  1. При отдельном запуске одного из тестов SubSuite2
  2. При запуске SubSuite2 в качестве набора
  3. При запуске TopSuite в качестве набора

Однако подобное вложение SuiteSetUps изменяет порядок выполнения теста, как указано в Проблема FitNesse # 131 , который был закрыт как WONTFIX.Такое изменение порядка нежелательно в нашем случае, так как оно затрудняет чтение / навигацию по отчетам о тестах и ​​сбивает с толку как нас, так и клиента, для которого мы пишем тесты.Мы хотели бы поддерживать порядок выполнения, все еще выполняя медленный запрос не более одного раза, независимо от того, как мы выполняем тесты.

Возможные решения, которые я придумали:

  • Замените вложенный SuiteSetUp на тест с именем для сортировки перед всеми остальными тестами в наборе.Таким образом, он выполняется в нужный момент без изменения порядка выполнения, но он выполняется только в случаях 2 и 3
  • Расширение JsonHttpTest, чтобы иметь возможность кэшировать ответы, так что запрос фактически выполняется только один раз.Это работает для всех трех случаев, но требует некоторых изменений кода Java, которые могут прерваться при обновлении HSAC *
  • Обратите внимание, что перемещение медленного GET-запроса в глобальный SuiteSetUp нежелательно, так как оно также будет выполняться при запускетолько тесты вне SubSuite2
  • Обратите внимание, что объединение всех тестов SubSuite2 в один тест также нежелательно, так как количество проверок, выполняемых в этом наборе, достаточно велико, чтобы сделать такой тест громоздким и медленным

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

*: Кроме того, мы хотели бы сделать | show | response |где-то, так что мы можем отлаживать вещи, если они идут не так, как надо, но ответ настолько велик, что просто показ того, что это занимает FitNesse, занимает несколько секунд.Только отображение ответа в SuiteSetUp позволяет легко находить его при минимальной задержке, а это решение упрощает отображение ответа

1 Ответ

0 голосов
/ 29 июня 2019

Должно быть возможно с FitNesse 20190628 (и выше) и добавить !define ALL_UNCLE_SUITE_SETUPS {true} в ваш набор верхнего уровня

...