skills/java-junit/SKILL.md
Get best practices for JUnit 5 unit testing, including data-driven tests
npx skillsauth add williamlimasilva/.copilot java-junitInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Your goal is to help me write effective unit tests with JUnit 5, covering both standard and data-driven testing approaches.
src/test/java.junit-jupiter-api, junit-jupiter-engine, and junit-jupiter-params for parameterized tests.mvn test or gradle test.Test suffix, e.g., CalculatorTest for a Calculator class.@Test for test methods.methodName_should_expectedBehavior_when_scenario.@BeforeEach and @AfterEach for per-test setup and teardown.@BeforeAll and @AfterAll for per-class setup and teardown (must be static methods).@DisplayName to provide a human-readable name for test classes and methods.@ParameterizedTest to mark a method as a parameterized test.@ValueSource for simple literal values (strings, ints, etc.).@MethodSource to refer to a factory method that provides test arguments as a Stream, Collection, etc.@CsvSource for inline comma-separated values.@CsvFileSource to use a CSV file from the classpath.@EnumSource to use enum constants.org.junit.jupiter.api.Assertions (e.g., assertEquals, assertTrue, assertNotNull).assertThat(...).is...).assertThrows or assertDoesNotThrow to test for exceptions.assertAll to ensure all assertions are checked before the test fails.@Mock and @InjectMocks annotations from Mockito to simplify mock creation and injection.@Tag to categorize tests (e.g., @Tag("fast"), @Tag("integration")).@TestMethodOrder(MethodOrderer.OrderAnnotation.class) and @Order to control test execution order when strictly necessary.@Disabled to temporarily skip a test method or class, providing a reason.@Nested to group tests in a nested inner class for better organization and structure.tools
Create a new workshop or use an existing directory as one. Handles two paths: (A) use an existing local directory the operator points at, or (B) create a new private GitHub repo in the signed-in account. Never creates a repo inside another repo.
development
Guide for setting up vcpkg in C++ projects, managing dependency versions, and cross-compiling. Covers manifest initialization, CMake and Visual Studio integration, classic-to-manifest migration, version pinning, baselines, overrides, triplets, and cross-compilation. Use when a user is working with vcpkg project setup, installation, version management, or cross-platform builds. For specialized tasks, additional references cover custom registries and overlay ports (references/registries.md), CI/CD and binary caching (references/ci.md), and troubleshooting and dependency lifecycle (references/troubleshooting.md).
testing
Emit structured agent signals — hands-up, blocked, done, checkpoint, partnership. Signals are written as JSON to .signals/ for dashboard consumption and noted in the journal for persistence.
development
Install and configure Markstream streaming Markdown renderers for Vue, React, Svelte, Angular, Nuxt, and Vue 2 applications. Use for package selection, minimal peer dependencies, CSS order, SSR boundaries, streaming mode, and renderer setup.