Могу ли я установить порядок, в котором функции должны работать в каратэ? - PullRequest
0 голосов
/ 28 сентября 2018

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

Могу ли я установить порядок запуска?

1 Ответ

0 голосов
/ 28 сентября 2018

Если это действительно однократное выполнение в конце, вы можете позволить JUnit позаботиться об этом шаге, добавив @ AfterClass

В приведенном ниже примере показано, где вы можете добавить свои до и послеcode.

@RunWith(Karate.class)
@CucumberOptions(features = "classpath:features")
public class TestRunner {

  @BeforeClass
  public static void beforeClass() {
    System.out.println("BEFORE"); 
  }     

  @AfterClass
  public static void afterClass() {
    System.out.println("AFTER"); 
  }     

}

В настоящее время порядок выполнения функций зависит от базовой реализации Cucumber.

В настоящее время каратэ использует огурцы MultiLoader для загрузки объектов из файловой системы или пути к классам.Версия огурца 1.2.5 на момент выпуска 0.8.1 каратэ, и порядок определяется Java ClassLoader.getResources https://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoader.html#getResources(java.lang.String)

Вам придется беспокоиться о структуре каталогов и именах.файлов в папках.

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

Если вы действительно хотите принудительно применитьпорядок выполнения функций, «путь каратэ» будет состоять в том, чтобы выполнять только одну функцию, и эта функция будет вызывать нужные вам функции друг за другом, а именно:

Укажите Runner, который будет выполнять только ваш оркестраторfeature:

    @RunWith(Karate.class)
    @CucumberOptions(features = "classpath:features/orchestrator.feature")
    public class TestRunner {

      @BeforeClass
      public static void beforeClass() {
        System.out.println("BEFORE"); 
      }     

      @AfterClass
      public static void afterClass() {
        System.out.println("AFTER"); 
      }     

    }

Определите тестовый оркестратор, который будет вызывать другие функции по порядку:

    Feature: Test orchestration feature 

    Scenario: Run all of the tests in order

      * call read('first.feature')
      * call read('second.feature')
      * call read('third.feature')

Вот примеры вызываемых функций - сначала:

    Feature: First feature 

    Scenario: First

      * print "first"

секунда:

    Feature: Second feature 

    Scenario: Second

      * print "Second"

и третья:

    Feature: Third feature 

    Scenario: Third

      * print "Third"
...