Могу ли я установить порядок, в котором должны выполняться функции в карате?

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

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


person Sneha Shukla    schedule 28.09.2018    source источник


Ответы (1)


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

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

@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.

Karate в настоящее время использует 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 для выполнения только вашей функции оркестратора:

    @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"
person birketta    schedule 28.09.2018
comment
что ты думаешь об этом вопросе @Peter Thomas. Мне также нужен этот cas, но я бы предпочел не писать оркестратор, потому что у меня есть множество тестовых функций. Благодарность - person cygne; 07.11.2018