Add junit-mockito module: 30 runnable JUnit 6.1.3 / Mockito 5.24.0 interview answers

One test per question, each writing and asserting its own transcript under output/.
Covers lifecycle, extensions, parameterized and dynamic tests, mocks vs spies,
verification, strict stubs, static and constructor mocking, and flaky tests.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01CifR2BE7PBvRy5hT8TS9oz
This commit is contained in:
2026-10-26 01:52:44 +00:00
co-authored by Claude Sonnet 5.5
parent d03962ea9c
commit 715036b640
57 changed files with 1672 additions and 0 deletions
+21
View File
@@ -0,0 +1,21 @@
# junit-mockito
Companion code for **Top 30 JUnit 6 and Mockito Interview Questions (2026)** on ankurm.com.
One test method per question (`src/test/java/lab/jm/A_...F_*`, methods named `qNN_...`). Each test writes its own transcript to `output/qNN-*.txt` and asserts the same facts, so an answer in the article that stops being true fails the build. Questions 2 and 27 also have a script, because they need two different jar versions (Q2) and a JVM started without the Mockito agent (Q27).
| Component | Version |
|---|---|
| JUnit (Platform, Jupiter) | 6.1.3 |
| Mockito (`mockito-core`, `mockito-junit-jupiter`) | 5.24.0 |
| Maven Surefire | 3.6.0 |
| JDK | 25.0.5 (Temurin) |
```bash
./scripts/run-all.sh # runs the 28 test methods, then the two scripts; rewrites output/
mvn test # tests only
```
Test classes under `src/test/java/lab/jm/fixtures/` are launched on purpose through the JUnit Launcher API by the answer tests (to observe lifecycle order, failures, skips). Their names end in `Fixtures`, so Surefire does not run them directly; if your IDE offers to run them, some contain a deliberately failing test.
Surefire starts the test JVM with `-javaagent:` pointing at `mockito-core`, which is the setup Mockito recommends on current JDKs. `scripts/no-agent.sh` removes it to reproduce the warning described in Q27.