Итак, я начал разработку фреймворка с использованием Cucumber / TestNG / Java / selenium. У меня есть класс Context, который сохраняет сценарий-текст с помощью перечислений в виде пары ключ-значение. Ссылка здесь здесь
Моя проблема заключается в том, что: Для определенного сценария в функции определения шагов определяются в нескольких классах:
Пример функции
Feature: A feature
Scenario: Scenario
Given Statement 1
Then Statement 2
Class1
Class firstDef{
TestRunner test;
public firstDef(TestRunner test){
this.test = test
}
Brain context = new Brain();
@Given("Statement1")
void method1(){
}
}
Класс 2
Class secondDef{
TestRunner test;
public secondDef(TestRunner test){
this.test = test
}
Brain context = new Brain();
@Given("Statement2")
void method1(){
}
}
Класс TestRunner
Class TestRunner{
//some code
@Test
public method1(){
//some code
}
}
Итак,
Объект класса мозга для каждого определения шага будет разным, это не помогает, так как я хочу, чтобы контекст был одинаковым на протяжении всего сценария
Даже если я создам экземпляр класса Brain in Runner, этот экземпляр будет новым для каждого экземпляра класса тестирования
Чтобы преодолеть это, одним из возможных решений, о котором я подумал, является сериализация и десериализация
В методе @BeforeClass я буду иметьe:
File f = new File(path);
if(!f.exists()){
Brain context = new Brain();
FileOutputStream fos = new FileOutputStream(name);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(context);
}
Затем я могу десериализовать, где бы я ни хотел, контекст и сериализовать снова после внесения изменений в одну и ту же ссылочную переменную.
Является ли вышеуказанный метод правильным или есть лучший способ преодолетьта же проблема