# 测试生成报告: <功能名称>

> 输入: 任务清单 (tasks.md) 中的 ServiceImpl 代码
> 生成日期: <日期>

---

## 1. 测试文件清单

| # | 测试文件 | 被测类 | Mock 依赖 | 测试方法数 |
|:-:|----------|--------|-----------|:----------:|
| 1 | `src/test/java/{package}/XxxServiceImplMockTest.java` | XxxServiceImpl | Mapper, DetailService | N |

---

## 2. 测试详情

### 2.1 XxxServiceImplMockTest

**被测类**: `com.twsz.mom.xxx.service.impl.XxxServiceImpl`

**Mock 依赖**:
| # | 字段 | 类型 | 说明 |
|:-:|------|------|------|
| 1 | xxxMapper | XxxMapper | 主表 Mapper |
| 2 | detailService | XxxDetailService | 子表 Service |

**测试用例**:

| # | @Nested 分组 | 方法名 | 场景 | 断言 |
|:-:|-------------|--------|------|------|
| 1 | saveModel方法测试 | should_insert_when_idIsNull | 新增成功 | verify(mapper).insert(any) |
| 2 | saveModel方法测试 | should_update_when_idNotNull | 编辑成功 | verify(mapper).updateById(any) |
| 3 | saveModel方法测试 | should_throw_when_optimisticLockFails | 乐观锁冲突 | assertThrows(BaseException) |
| 4 | deleteByIds方法测试 | should_deleteByIds_when_givenIds | 批量删除 | verify(mapper).deleteBatchIds(any) |
| 5 | search方法测试 | should_returnPage_when_search | 分页查询 | assertNotNull(result) |
| 6 | list方法测试 | should_returnList_when_list | 列表查询 | assertNotNull(result) |

**测试代码结构**:

```java
@ExtendWith(MockitoExtension.class)
class XxxServiceImplMockTest {

    @Mock
    private XxxMapper xxxMapper;

    @Mock
    private XxxDetailService detailService;

    @InjectMocks
    private XxxServiceImpl xxxService;

    @BeforeEach
    void setUp() {
        ReflectionTestUtils.setField(xxxService, "baseMapper", xxxMapper);
    }

    @Nested
    @DisplayName("saveModel方法测试")
    class SaveModelTests {
        @Test
        @DisplayName("新增成功")
        void should_insert_when_idIsNull() { ... }
    }
}
```

---

## 3. 统计

| 维度 | 数量 |
|------|:----:|
| 测试文件数 | N |
| 测试方法总数 | N |
| Mock 依赖总数 | N |
