У меня есть всего 14 функций, одна из которых предназначена для очистки, и я хочу, чтобы она работала в конце. Но когда я запускаю свой пакет, он работает в середине теста и, следовательно, ломает его.
Могу ли я установить порядок прогона?
У меня есть всего 14 функций, одна из которых предназначена для очистки, и я хочу, чтобы она работала в конце. Но когда я запускаю свой пакет, он работает в середине теста и, следовательно, ломает его.
Могу ли я установить порядок прогона?
Если это действительно одноразовое выполнение в конце, вы можете позволить 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"