一键导入
test-generator
Generate TDD-first test suites for ShareShelf backend (JUnit 5 + MockK) and frontend (Vitest + RTL) code.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Generate TDD-first test suites for ShareShelf backend (JUnit 5 + MockK) and frontend (Vitest + RTL) code.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
Runs backend unit and integration tests using Maven.
Enforce ShareShelf Material 3 design standards on Android — emerald/stone color scheme, component patterns, and mobile UX best practices.
Review current changes against ShareShelf conventions checklist. Use after making code changes or before committing.
Inspect the ShareShelf PostgreSQL database — list tables, describe schema, run safe SELECT queries, and debug data issues.
基于 SOC 职业分类
| name | test-generator |
| description | Generate TDD-first test suites for ShareShelf backend (JUnit 5 + MockK) and frontend (Vitest + RTL) code. |
Generate comprehensive test suites for ShareShelf using Test-Driven Development principles. Write failing tests first, then implement.
@Service classes)backend/src/test/kotlin/com/shareshelf/{module}/{ServiceName}Test.kt@ExtendWith(MockKExtension::class) for unit tests@Mockk or mockk<T>()@ExtendWith(MockKExtension::class)
class ItemServiceTest {
@Mockk
private lateinit var itemRepository: ItemRepository
@InjectMockks
private lateinit var itemService: ItemService
@Test
fun `should create item with valid data`() {
// Given
val request = CreateItemRequest(name = "Drill", dailyPrice = 5.0)
val user = User(id = 1L, email = "test@test.com")
every { itemRepository.save(any()) } returns Item(id = 1L, name = "Drill")
// When
val result = itemService.create(request, user)
// Then
assertEquals("Drill", result.name)
verify(exactly = 1) { itemRepository.save(any()) }
}
}
@RestController classes)backend/src/test/kotlin/com/shareshelf/{module}/{ControllerName}Test.kt@WebMvcTest with @MockkBean for dependenciesmockMvc.perform() with MockMvcRequestBuilders@WebMvcTest(ItemController::class)
class ItemControllerTest {
@MockkBean
private lateinit var itemService: ItemService
@Autowired
private lateinit var mockMvc: MockMvc
@Test
@WithMockUser
fun `GET api/items should return 200 with items list`() {
every { itemService.findAll(any()) } returns listOf(mockItem())
mockMvc.perform(get("/api/items"))
.andExpect(status().isOk)
.andExpect(jsonPath("$.success").value(true))
.andExpect(jsonPath("$.data").isArray)
}
}
JpaRepository interfaces)backend/src/test/kotlin/com/shareshelf/{module}/{RepositoryName}Test.kt@DataJpaTest with @Testcontainers for PostgreSQL or H2 fallback@Query methods with real datafrontend/src/components/__tests__/{ComponentName}.test.tsximport { render, screen, fireEvent, waitFor } from '@testing-library/react'
import { describe, it, expect, vi } from 'vitest'
describe('LoginForm', () => {
it('should show validation errors for empty fields', async () => {
render(<LoginForm />)
fireEvent.click(screen.getByRole('button', { name: /login/i }))
await waitFor(() => {
expect(screen.getByText(/email is required/i)).toBeInTheDocument()
})
})
it('should call API on valid submit', async () => {
vi.mock('@/lib/api', () => ({ post: vi.fn().mockResolvedValue({ data: { success: true } }) }))
render(<LoginForm />)
// fill form, submit, assert navigation
})
})
useRouter from next/navigationslot<T>() to capture arguments when needed for assertions.verify(exactly = N) for critical method calls — never verifyAll or confirmVerified.@Disabled except for known issues with a TODO comment.