JUnit cheatsheet
A one-page reference for JUnit 5. For the extension model and interview Q&A, see the complete guide.
๐ Full guide: JUnit โCore annotationsโ
@Test
void addsNumbers() { assertEquals(4, 2 + 2); }
@BeforeEach void setup() { ... }
@AfterEach void teardown() { ... }
@BeforeAll static void once() { ... }
@Disabled("flaky, see JIRA-123")
Assertions & assumptionsโ
assertEquals(expected, actual);
assertThrows(IllegalArgumentException.class, () -> parse(""));
assertAll(
() -> assertTrue(user.isActive()),
() -> assertEquals("Bob", user.getName())
);
assumeTrue(isCI()); // skip test if false, doesn't fail
Parameterized testsโ
@ParameterizedTest
@ValueSource(strings = {"", " ", "\t"})
void blankStrings(String input) {
assertTrue(input.isBlank());
}
@ParameterizedTest
@CsvSource({"1,1,2", "2,3,5"})
void add(int a, int b, int sum) {
assertEquals(sum, a + b);
}
@Nested testsโ
class UserTest {
@Nested class WhenActive {
@Test void canLogin() { ... }
}
@Nested class WhenSuspended {
@Test void cannotLogin() { ... }
}
}
Groups related scenarios, readable failure output by context.
Extension modelโ
@ExtendWith(MockitoExtension.class)
class ServiceTest {
@Mock Repository repo;
}
Replaces JUnit 4 @RunWith โ composable, multiple extensions per class.
Parallel executionโ
# junit-platform.properties
junit.jupiter.execution.parallel.enabled=true
junit.jupiter.execution.parallel.mode.default=concurrent
JUnit 5 vs TestNGโ
| JUnit 5 | TestNG | |
|---|---|---|
| Parameterized | @ParameterizedTest | @DataProvider |
| Grouping | @Tag | @Groups |
| Parallel | config-based | native, more granular |