Agent skill · software engineering · github
java-junit
Get best practices for JUnit 5 unit testing, including data-driven tests
Why this skill is useful
Codifies best practices for JUnit 5 unit testing, which the AI could infer but now has clear guidelines.
What it needs
About 2k tokens when loaded. Last updated 2026-08-07. 37,534 stars on the source repository.
What this skill does
JUnit 5+ Best Practices Your goal is to help me write effective unit tests with JUnit 5, covering both standard and data-driven testing approaches. Project Setup Use a standard Maven or Gradle project structure. Place test source code in src/test/java. Include dependencies for junit-jupiter-api, junit-jupiter-engine, and junit-jupiter-params for parameterized tests. Use build tool commands to run tests: mvn test or gradle test. Test Structure Test classes should have a Test suffix, e.g., CalculatorTest for a Calculator class. Use @Test for test methods. Follow the Arrange-Act-Assert (AAA) pattern. Name tests using a descriptive convention, like methodNameshouldexpectedBehaviorwhenscenario. Use @BeforeEach and @AfterEach for per-test setup and teardown. Use @BeforeAll and @AfterAll for per-class setup and teardown (must be static methods). Use @DisplayName to provide a human-readable name for test classes and methods. Standard Tests Keep tests focused on a single behavior. Avoid testing multiple conditions in one test method. Make tests independent and idempotent (can run in any order). Avoid test interdependencies. Data-Driven (Parameterized) Tests Use @ParameterizedTest to mark a method as a parameterized test. Use @ValueSource for simple literal values (strings, ints, etc.). Use @MethodSource to refer to a factory method that provides test arguments as a Stream, Collection, etc. Use @CsvSource for inline comma-separated values. Use @CsvFileSource to use a CSV file from the classpath. Use @EnumSource to use enum constants. Assertions Use the static methods from org.junit.jupiter.api.Assertions (e.g., assertEquals, assertTrue, assertNotNull). For more fluent and readable assertions, consider using a library like AssertJ (assertThat(...).is...). Use assertThrows or assertDoesNotThrow to test for exceptions. Group related assertions with assertAll to ensure all assertions are checked before the test fails. …
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills github/java-junit