AGENT SKILL
java-testing
Testing standards using JUnit 5, AssertJ, and Mockito for Java. Use when writing or reviewing Java unit tests, setting up parameterized tests, writing integration tests with Testcontainers, or working with Mockito mocks. (triggers: **/*Test.java, **/*IT.java, @Test, @ParameterizedTest, Mockito, AssertJ, assertThat, JUnit, Testcontainers)
使用场景测试与质量
- License 许可
- MIT
- 最近更新
- 2026-06-24
- Stars
- ★ 67
- Forks
- 24
01 前言 Front Matter
- name
- java-testing
- description
- Testing standards using JUnit 5, AssertJ, and Mockito for Java. Use when writing or reviewing Java unit tests, setting up parameterized tests, writing integration tests with Testcontainers, or working with Mockito mocks. (triggers: **/*Test.java, **/*IT.java, @Test, @ParameterizedTest, Mockito, AssertJ, assertThat, JUnit, Testcontainers)
02 资源文件 6
- 其他customize.toml1.6 KB
- 参考文档steps/step-01-validate-prerequisites.md10.3 KB
- 参考文档steps/step-02-design-epics.md7.6 KB
- 参考文档steps/step-03-create-stories.md8.7 KB
- 参考文档steps/step-04-final-validation.md5.1 KB
- 参考文档templates/epics-template.md1.1 KB
03 SKILL.md 正文
Java Testing Standards
Priority: P0 (CRITICAL)
High-reliability testing using JUnit 5 and fluent assertions.
Implementation Guidelines
- JUnit 5 (Jupiter): Use
@Test,@BeforeEach, and@AfterEach. Avoid JUnit 4 classes. - Fluent Assertions: Use
AssertJ (assertThat)over JUnitassertEquals— enhanced readability. - Naming: Use
MethodName_State_Resultor@DisplayName("Check if X when Y"). - Parameterized Tests: Use
@ParameterizedTestwith@ValueSource,@CsvSource, or@MethodSource. - Mocking Strategy: Use
Mockitowith@ExtendWith(MockitoExtension.class)(JUnit 5). Use@Mock,@Spy, and@InjectMocks. NEVER mock data-only Records. - Integration Testing: Use
Testcontainerswith@Containerannotation for real databases (PostgreSQL/Redis) in integration tests (*IT.java). - Isolation: Each test method MUST be isolated and independent; use
@DirtiesContextsparingly. - AssertJ Chaining: Chain assertions for clarity:
assertThat(result).isNotNull().hasSize(2).contains("X"). - Mocking verification: Use
verify(mock, times(1)).method()to audit side-effects. - Exceptions: Use
assertThatThrownBy(() -> ...)to verify specific Exception types and messages.
Anti-Patterns
- No Logic in Tests: Keep tests declarative; no loops or if/else branching.
- No System.out in Tests: Use assertions; never print to stdout.
- No Legacy Assertions: Use
assertThat(a).isEqualTo(b), notassertTrue(a == b). - No Shared State: Tests must be isolated and order-independent.