So, I started developing a framework using Cucumber/TestNG/Java/selenium I have a Context class that saves the scenariocontext with the help of enums in the form of key value pair Referenced from here
My issue is that: For a particular scenario in a feature, Step definitions are defined in multiple classes:
Sample feature
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(){
}
}
Class 2
Class secondDef{
TestRunner test;
public secondDef(TestRunner test){
this.test = test
}
Brain context = new Brain();
@Given("Statement2")
void method1(){
}
}
TestRunner class
Class TestRunner{
//some code
@Test
public method1(){
//some code
}
}
So,
The brain class object for every step-definition will be different, this doesn't help as I want the context to be same throughout the scenario
Even if I instantiate the Brain in Runner class, the instance will be new for every instance of the test class
To overcome this, one possible solution that I have thought of is Serialization and de-serialization
In the @BeforeClass method, I will have:
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);
}
Then I can deserialize wherever I want the context and serialize again after making changes to same reference variable
Is the above method correct or is there a better way to overcome the same problem