Skip to main content

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.

Tagging & filteringโ€‹

@Tag("smoke")
class LoginTest { ... }
mvn test -Dgroups="smoke"

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 5TestNG
Parameterized@ParameterizedTest@DataProvider
Grouping@Tag@Groups
Parallelconfig-basednative, more granular
See: JUnit 5 vs. TestNG