@BeforeClass

From NovaOrdis Knowledge Base
Revision as of 01:52, 29 August 2021 by Ovidiu (talk | contribs) (→‎Overview)
Jump to navigation Jump to search

Internal

Overview

The annotation must be attached to a static method.

If two methods with different names are annotated with @BeforeClass in a test class hierarchy, as shown below:

TestBase.java
  │  @BeforeClass
  │  public static void methodA() {
  │     ...
  │  }
  │
  └── SomeTest.java
        @BeforeClass
        public static void methodB() {
          ...
        }

then both methods are executed only once, in this order: first the parent class method (methodA()), then the subclass method (methodB()). The rule holds true in a multi-layer hierarchy.

However, if both methods have the same name, an override of sorts takes place and only the method belonging to the subclass is executed:

TestBase.java
  │  @BeforeClass
  │  public static void someMethod() {
  │     ...
  │  }
  │
  └── SomeTest.java
        @BeforeClass
        public static void someMethod() {
          ...
        }

Only SomeTest.someMethod() is executed, so if you need the logic executed in superclass, it must be invoked explicitly with: <syntaxhighlight lang='java'> class SomeTest {

 @BeforeClass
 public static void someMethod() {
    TestBase.someMethod();
 }

} <syntaxhighlight lang='java'>