In this post, we will talk and learn about the JUnit 5 life cycle @AfterAll annotation.
In JUnit 5 @AfterAll annotation is used to signal that the annotated method should be executed after all tests in the current test class.
It is a replacement for @AfterClass annotation in JUnit 4.
@AfterAll annotated method must be declared as a static method otherwise it will throw runtime error.
@AfterAll Annotation Example
Let’s understand @AfterAll Annotation using an example. Here I have MyUtils.java class with the add method. I will write a Junit test for this add method and we will see how we can make use of @AfterAll Annotation in the same Unit class
Utility Class for that we have to write JUnit Test:
1 2 3 4 5 6 7 8 |
package kkjavatutorials.com; public class MyUtils { public int add (int n1,int n2) { return n1+n2; } } |
JUnit Test Class, method setUp() is annotated with @BeforeAll and method tearDown() is annotated with @AfterAll Annotation.
NOTE: Both setUp() and tearDown() method must be declared as static else it will throw Runtime Exception.
1 2 3 4 5 6 |
org.junit.platform.commons.JUnitException: @AfterAll method 'void kkjavatutorials.com.MyUtilsTest.tearDown()' must be static unless the test class is annotated with @TestInstance(Lifecycle.PER_CLASS). at org.junit.jupiter.engine.descriptor.LifecycleMethodUtils.assertStatic(LifecycleMethodUtils.java:57) at org.junit.jupiter.engine.descriptor.LifecycleMethodUtils.lambda$findMethodsAndAssertStatic$0(LifecycleMethodUtils.java:81) at java.util.ArrayList.forEach(ArrayList.java:1249) at java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1080) at org.junit.jupiter.engine.descriptor.LifecycleMethodUtils.findMethodsAndAssertStatic(LifecycleMethodUtils.java:81) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
package kkjavatutorials.com; import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; class MyUtilsTest { private static MyUtils myUtils; @BeforeAll static void setUp(){ System.out.println("Test data set up.."); myUtils = new MyUtils(); } @Test void addTest() { System.out.println("addTest Method.."); assertEquals(10, myUtils.add(6, 4)); } @AfterAll static void tearDown(){ System.out.println("Test data tearDown.."); myUtils = null; } } |
The output of the above test class
You May Also Like:
What is JUnit?
JUnit 5 Annotations
JUnit 5 Maven Dependency
JUnit 5 with Gradle Dependency
JUnit 5 Test Lifecycle
JUnit 5 @BeforeAll annotation example
JUnit 5 @BeforeEach and @AfterEach annotation Example
JUnit 5 Display Names
Assertions in JUnit 5 Examples
Third-party Assertion Libraries support in JUnit 5
JUnit 5 Assumptions Examples
JUnit 5 @Disabled Test Example
Conditional Test Execution in JUnit
Test Execution Order in Junit 5
JUnit 5 Nested Tests Example
Dependency Injection and Testing in JUnit 5
Test Interfaces and Default Methods in JUnit 5
JUnit 5 @RepeatedTest Annotation example
Junit 5 Parameterized Tests with examples
Argument Conversion in Parameterized Tests in Junit 5
Argument Aggregation in Parameterized Tests in Junit 5
Customizing Display Names of Parameterized Tests in JUnit 5
Dynamic Tests example in Junit 5
JUnit 5 Test Suites Examples
JUnit 5 Temporary Directory Support
How to execute Junit 5 tests in Eclipse IDE
JUnit 5 Test Templates for Eclipse
JUnit 5 vs JUnit 4
That’s all about JUnit 5 @AfterAll annotation example
If you have any feedback or suggestion please feel free to drop in below comment box.