I am seeing a behavior with TestNG which I am not sure is correct. I have two classes ClassA extends ClassB
public class ClassA extends ClassB{
static {
System.out.println("Static Initialization block : Init CLass A");
}
ClassA(){
System.out.println("inside ClassA constructor");
}
@Test
public void testme() throws Exception{
System.out.println("Test Case");
}
}
Class B:
public class ClassB{
static {
System.out.println("Static Initialization block : Init CLass B");
}
ClassB(){
System.out.println("inside ClassB constructor");
}
@BeforeClass
public void setup(){
System.out.println("ClassB setup");
}
}
These classes are placed under com.test package
Now when I execute ClassA.java as a TestNG test from eclipse I get below output :
Static Initialization block : Init CLass B
Static Initialization block : Init CLass A
inside ClassB constructor
inside ClassA constructor
If I execute same code by selecting com.test package I seeing below output :
Static Initialization block : Init CLass B
inside ClassB constructor
Static Initialization block : Init CLass A
inside ClassB constructor
inside ClassA constructor
Basically, ClassB is getting instantiated twice when executed as a testNg package as ClassB contains @BeforeClass annotation, This is making my code to fail with Null pointer exceptions.
Am i missing any thing here ?
Thanks CG
Aucun commentaire:
Enregistrer un commentaire