Challenge - 5 Problems
JUnit @Order Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate2:00remaining
Test execution order with @Order annotation
Given the following JUnit 5 test class, what is the order of test method execution?
JUnit
import org.junit.jupiter.api.*; import org.junit.jupiter.api.MethodOrderer.OrderAnnotation; @TestMethodOrder(OrderAnnotation.class) public class SampleTest { @Test @Order(2) void testSecond() { System.out.println("Second"); } @Test @Order(1) void testFirst() { System.out.println("First"); } @Test @Order(3) void testThird() { System.out.println("Third"); } }
Attempts:
2 left
💡 Hint
Look at the @Order values and the @TestMethodOrder annotation.
✗ Incorrect
JUnit 5 executes test methods in the order specified by the @Order annotation when @TestMethodOrder(OrderAnnotation.class) is used. Lower order values run first.
❓ assertion
intermediate2:00remaining
Assertion to verify test execution order
Which assertion correctly verifies that a list of executed test names matches the expected order when using @Order annotation?
JUnit
List<String> executedTests = List.of("testFirst", "testSecond", "testThird"); List<String> expectedOrder = List.of("testFirst", "testSecond", "testThird");
Attempts:
2 left
💡 Hint
Check which assertion verifies both order and content equality.
✗ Incorrect
assertArrayEquals compares arrays element by element and order matters. assertEquals on lists also works but assertArrayEquals is more explicit for order verification.
🔧 Debug
advanced2:00remaining
Why is @Order ignored in this test class?
Consider this JUnit 5 test class:
import org.junit.jupiter.api.*;
public class TestClass {
@Test
@Order(1)
void testA() {}
@Test
@Order(2)
void testB() {}
}
Why are the tests not executed in the order testA then testB?
Attempts:
2 left
💡 Hint
Check if the class has the annotation that enables ordering by @Order.
✗ Incorrect
JUnit 5 requires @TestMethodOrder(OrderAnnotation.class) on the test class to enable ordering by @Order annotations. Without it, the order is not guaranteed.
🧠 Conceptual
advanced2:00remaining
Effect of duplicate @Order values
What happens if two test methods in a JUnit 5 test class have the same @Order value when using @TestMethodOrder(OrderAnnotation.class)?
Attempts:
2 left
💡 Hint
Think about how ordering works when priorities are equal.
✗ Incorrect
When multiple tests have the same @Order value, their relative order is not guaranteed and may be arbitrary.
❓ framework
expert2:00remaining
Combining @Order with other TestMethodOrderers
Given a JUnit 5 test class annotated with @TestMethodOrder(MethodOrderer.OrderAnnotation.class), what happens if a test method is missing the @Order annotation?
Attempts:
2 left
💡 Hint
The default @Order value is 0, and lower values run first.
✗ Incorrect
JUnit assigns a default order value of 0 to test methods without @Order annotation. Since lower order values are executed first, they run before test methods with explicitly assigned higher order values.