with one click
review-test
Use PROACTIVELY when reviewing unit test code quality, discussing test design, or evaluating test coverage for Java/Spring Boot projects.
Menu
Use PROACTIVELY when reviewing unit test code quality, discussing test design, or evaluating test coverage for Java/Spring Boot projects.
| name | review-test |
| description | Use PROACTIVELY when reviewing unit test code quality, discussing test design, or evaluating test coverage for Java/Spring Boot projects. |
| argument-hint | ["test-file-or-directory"] |
| allowed-tools | Read, Grep, Glob |
Review unit test code to ensure quality meets senior developer standards.
Most Important: All test scenarios must be based on real system behavior. Never fabricate hypothetical scenarios.
// Bad: Assuming exception is thrown without checking source code
@Test
void shouldThrowIllegalArgumentException() {
assertThrows(IllegalArgumentException.class, () -> facade.process(null));
}
// Good: Verified AcFacade.java:45 actually throws TokenInvalidException
@Test
@DisplayName("當Token無效時_應該拋出TokenInvalidException")
void shouldThrowTokenInvalidExceptionWhenTokenIsInvalid() {
assertThrows(TokenInvalidException.class, () -> facade.process(invalidToken));
}
createTestOrder(DEFAULT_USER, DEFAULT_ITEMS, DEFAULT_AMOUNT) — just write new Order(userId, items, amount) inlineextends AbstractServiceTest<Order, OrderRepository> — just class OrderServiceTest { ... }| Layer | Should Test | Should NOT Test |
|---|---|---|
| Model | Bean Validation (@NotBlank, @Size, etc.) | — |
| Controller | HTTP behavior, status codes, JSON serialization | Duplicate validation rules |
| Service | Business logic, state changes | Database operation details |
@DisplayName in Traditional Chinese: "當訂單金額超過限制時_應該拋出例外"@Nested for logical groupingshould_expectedBehavior_when_condition()Prefer state verification over interaction verification:
// Good: State verification
assertThat(order.getStatus()).isEqualTo(OrderStatus.PENDING);
// Use interaction verification only when state cannot be asserted
verify(emailService).sendOrderCompletionEmail(orderId);
@DisplayName in Traditional Chinese@Nested for organizationIMPORTANT: All output must be in Traditional Chinese (繁體中文)
when(service.voidMethod()).thenReturn(...) 會編譯錯誤。void method 要用 doNothing().when(service).voidMethod()@ExtendWith(MockitoExtension.class),@SpringBootTest 載入整個 ApplicationContext 很慢verify(service, times(1)).method()Use PROACTIVELY when reviewing Java/Spring Boot code quality, Clean Code compliance, or over-design concerns.
Use when reviewing PR changes, comparing branches, or analyzing GitHub pull requests. Supports both gh CLI (PR number) and git diff (branch comparison) modes.
Use when user needs technical design advice, architecture planning, or implementation strategy for Spring Boot projects. Produces actionable Todo List.
Use when analyzing slow queries, optimizing SQL/JPA performance, reviewing EXPLAIN plans, or troubleshooting database bottlenecks.
Clean Architecture design guide for Spring Boot. Use when reviewing code architecture, designing solutions, discussing layer separation, dependency rules, or project structure. Applies Uncle Bob's Clean Architecture principles.
Java best practices guide based on Effective Java. Use when reviewing Java code, discussing design patterns, object creation, equals/hashCode, Optional, Stream API, exception handling, or concurrency. Applies Joshua Bloch's principles.