This commit bundles together a wide range of additions and modifications: - A large number of new test CAD files (.dxf, .dwg) and expected output files (.pdf) have been added to the
33 lines
2.1 KiB
Markdown
33 lines
2.1 KiB
Markdown
# 项目背景与理念
|
||
|
||
## 1. 项目目标
|
||
|
||
本项目旨在创建一个Java应用程序,用于将AutoCAD的DWG或DXF文件中指定的布局(Layout)导出为PDF文件。用户在运行程序时,可以指定一个CAD文件,程序会自动列出文件中所有可用的布局,用户选择其中一个后,程序会将其转换为一个独立的PDF文档。
|
||
|
||
## 2. 技术选型
|
||
|
||
- **语言**: Java 8
|
||
- **核心库**: Aspose.CAD for Java
|
||
- **构建工具**: Apache Maven
|
||
- **测试框架**: JUnit 4
|
||
|
||
选择 `Aspose.CAD` 是因为它提供了强大且易于使用的API,可以直接处理CAD文件格式,无需安装AutoCAD。Maven则用于方便地管理项目依赖(如Aspose.CAD和JUnit)和项目构建过程。
|
||
|
||
## 3. 开发理念:测试驱动开发 (TDD)
|
||
|
||
本项目严格遵循测试驱动开发的理念。最初的实现方式是将所有逻辑都放在 `main` 方法中,通过命令行交互进行测试。然而,这种方式在面对路径问题、环境问题或无输出的“静默失败”时,难以定位错误。
|
||
|
||
为了解决这个问题并提高代码质量,我们进行了以下重构:
|
||
|
||
1. **逻辑分离**: 将核心的CAD文件处理和PDF导出功能从用户交互代码中分离出来,封装到一个独立的、可测试的 `exportLayout` 方法中。`main` 方法现在只负责处理控制台的输入和输出。
|
||
|
||
2. **单元测试**: 引入了 `JUnit` 测试框架,并为核心的 `exportLayout` 方法编写了专门的单元测试。这些测试用例使用真实的CAD文件 (`塔器.dxf`, `容器.dxf`) 来验证:
|
||
- 程序是否能成功生成PDF文件。
|
||
- 生成的PDF文件是否损坏(通过检查文件大小是否超过一个合理的阈值,如100KB)。
|
||
- 当指定的布局不存在或文件路径错误时,程序是否能抛出预期的异常。
|
||
|
||
这种方法带来了几个关键的好处:
|
||
- **可靠性**: 自动化测试确保了每次代码变更后,核心功能依然能正常工作。
|
||
- **易于调试**: 当测试失败时,能够快速定位到问题所在的代码块。
|
||
- **代码质量**: 促使代码结构更清晰、模块化,易于维护和扩展。
|