Запустите симулятор в тестовом примере Citrus Framework

Возможно ли как-то запустить сценарий симулятора Citrus из тестового набора Citrus?

У меня есть сквозной тестовый сценарий. Я отправляю сообщение на входную конечную точку и получаю его от самой последней конечной точки:

<parallel>
   <sequential>
      <receive endpoint="...">
         <message>
            <resource file="..."/>
         </message>
         <header>
            ...
         </header>
      </receive>
   </sequential>
   <sequential>
      <sleep seconds="10"/>
      <send endpoint="...">
         <message>
            <resource file="..."/>
         </message>
         <header>
            ...
         </header>
      </send>
   </sequential>
</parallel>

Тем временем мое приложение выполняет некоторые дополнительные чтения. Мне нужно смоделировать ответы для этих чтений, и было бы здорово, если бы я мог включить ответы для этих чтений в этот тестовый пример или запустить конкретный сценарий симулятора вместе с запуском этого тестового примера (нет необходимости запускать дополнительное внешнее приложение Java Simulator перед тестированием) . Это возможно?

С уважением


person Gandalf    schedule 08.03.2018    source источник


Ответы (1)


Позвольте мне посмотреть, правильно ли я понял ваш сценарий:

  1. Отправьте исходное сообщение.
  2. Смоделируйте ответы для этих «дополнительных показаний».
  3. Получите ответ на исходное сообщение.

Вы можете добиться этого с помощью тегов <parallel> и <sequential>:

<parallel>
  <sequential>
    <!-- send initial request -->
    <send ...>

    <!-- receive response to the initial request -->
    <receive ...>
  </sequential>
  <sequential>
    <!-- simulate readings -->
  </sequential>
</parallel>

У вас есть две темы. В первом <sequential> вы отправляете инициирующий запрос (1) И ждете ответа (3).

Во втором <sequential> вы имитируете ответы на ваши показания (2).

Оба потока будут работать параллельно. Citrus отправит запрос, после чего дождется ответа с действием <receive>. Этот ответ придет только после того, как вы закончите моделирование своих показаний (в параллельном потоке), и ваше приложение сможет отправить правильный ответ (я полагаю). Это означает, что вам нужно либо поместить спящий режим между <send> и <receive> внутри вашего первого <sequential> ИЛИ настроить достаточно высокий тайм-аут для действия <receive>.

Я также ответил на ваш старый вопрос, связанный с Citrus и темами, и Я полагаю, именно поэтому у вас есть два <sequential>, работающих параллельно с <receive> в первом. Если ваше приложение отправляет ответ только после имитации показаний, настройка, которую я разместил выше, должна работать, поскольку скорость ответа не должна быть проблемой. Если скорость все еще является проблемой, что-то вроде этого должно работать:

<parallel>
  <sequential>
    <!-- receive response to the initial request -->
    <receive ...>
  </sequential>

  <sequential>
    <!-- send initial request -->
    <send ...>
  </sequential>

  <sequential>
    <!-- simulate readings -->
  </sequential>
</parallel>

Опять же, не забывайте о тайм-ауте действия <receive>.

Если вам нужно что-то вроде многоразовых тестовых сценариев, возможно, шаблоны могут помочь вам.

person Liviu Ilea    schedule 16.03.2018