GOODBOY008 commented on issue #717: URL: https://github.com/apache/fesod/issues/717#issuecomment-4295271653
## Implementation Update: All Phases Complete in PR #901 PR [#901](https://github.com/apache/fesod/pull/901) delivers the **full scope** of this proposal — all 6 phases — in a single branch (`test/717-1-testkit-foundation`). --- ### Migration Status (Final) | Phase | Scope | Status | |---|---|---| | Phase 1 | Testkit Infrastructure | ✅ Complete | | Phase 2 | converter/, core/, format/, readwrite/, sheet/ | ✅ Complete | | Phase 3 | fill/, style/, head/ | ✅ Complete | | Phase 4 | template/, annotation/ | ✅ Complete | | Phase 5 | Remaining packages (compatibility/, csv/, data/, large/, handler/) | ✅ Complete | | Phase 6 | Legacy cleanup (delete old packages) | ✅ Complete (51 files deleted) | --- ### What Was Delivered #### Phase 1 — Testkit Infrastructure New `testkit/` package with all 6 components + their own unit tests: ``` testkit/ ├── base/AbstractExcelTest.java # @TempDir, format providers, round-trip helpers ├── enums/ExcelFormat.java # XLSX/XLS/CSV with capability metadata + ExcelTypeEnum bridge ├── enums/ApiMode.java # FILE / STREAM ├── listeners/CollectingReadListener.java # Generic data collector — no embedded assertions ├── assertions/{ExcelAssertions, WorkbookAssert, SheetAssert, RowAssert, CellAssert}.java ├── helpers/RoundTripHelper.java # write→read helpers for File and Stream API modes ├── builders/TestDataBuilder.java # shared factory methods replacing per-class data() └── models/{SimpleData, ConverterBaseData, TitleData}.java ``` #### Phases 2–5 — Package Reorganization All 35 legacy packages from `main` are accounted for. Migrated into 9 organized packages: | New Package | Migrated From | Test Classes | |---|---|---| | `converter/` | converter/, celldata/, excludeorinclude/, extra/, sort/ | 7 | | `core/` | simple/, nomodel/, repetition/, skip/, noncamel/ | 6 | | `format/` | bom/, charset/, csv/, compatibility/, dataformat/ | 6 | | `readwrite/` | encrypt/, exception/, cache/, parameter/, large/, writesheet/ | 8 | | `sheet/` | hiddensheets/, multiplesheets/ | 3 | | `style/` | style/, fill/, fill/style/, annotation/ | 8 | | `template/` | template/ | 1 | | `handler/` | handler/ | 1 | | `head/` | head/ | 6 | #### Phase 6 — Legacy Cleanup - **51 legacy files deleted** (old packages, listeners, duplicate model classes) - **26 assertion-bearing listener classes removed** — replaced by single `CollectingReadListener` - All `@TestMethodOrder` + `t01`/`t02`/`t03` naming conventions eliminated in migrated classes - `TestFileUtil.createNewFile()` classpath pollution replaced by `@TempDir` - 5 behavioral listeners retained in `readwrite/` — these are **not** the same anti-pattern (none embed `Assertions.*`); they serve specialized roles (exception-throwing, date windowing, large-batch collection) --- ### Final Metrics | Metric | Before (main) | After (PR #901) | Change | |---|---|---|---| | Packages | 35 legacy | 9 organized | -74% | | Listener classes with embedded assertions | 26 | 0 | -100% | | Per-format test method copies (t01/t02/t03) | 54+ | 0 | -100% | | Files deleted (legacy cleanup) | — | 51 | — | | Test files added/new | — | 70 | — | | Lines deleted | — | 6,960 | — | | Lines added | — | 5,901 | — | -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
