Если это действительно однократное выполнение в конце, вы можете позволить 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"