@BeforeClass: Difference between revisions
Jump to navigation
Jump to search
Line 6: | Line 6: | ||
The annotation must be attached to a '''static''' method. | The annotation must be attached to a '''static''' method. | ||
=<tt>@@BeforeClass</tt> and Class Hierarchies= | |||
If two methods '''with different names''' are annotated with <code>@BeforeClass</code> in a test class hierarchy, as shown below: | If two methods '''with different names''' are annotated with <code>@BeforeClass</code> in a test class hierarchy, as shown below: |
Revision as of 01:58, 29 August 2021
Internal
Overview
The annotation must be attached to a static method.
@@BeforeClass and Class Hierarchies
If two methods with different names are annotated with @BeforeClass
in a test class hierarchy, as shown below:
TestBase.java │ @BeforeClass │ public static void testBaseOneTimeSetup() { │ ... │ } │ └── SomeTest.java @BeforeClass public static void someTestOneTimeSetup() { ... }
then both methods are executed only once, in this order: first the parent class method (testBaseOneTimeSetup()
), then the subclass method (someTestOneTimeSetup()
). 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 oneTimeClassSetup() { │ ... │ } │ └── SomeTest.java @BeforeClass public static void oneTimeClassSetup() { ... }
Only SomeTest.oneTimeClassSetup()
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 oneTimeClassSetup() { TestBase.oneTimeClassSetup(); }
} <syntaxhighlight lang='java'>