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 |
||
|---|---|---|
| .. | ||
| README.md | ||
项目背景与理念
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 方法中,通过命令行交互进行测试。然而,这种方式在面对路径问题、环境问题或无输出的“静默失败”时,难以定位错误。
为了解决这个问题并提高代码质量,我们进行了以下重构:
-
逻辑分离: 将核心的CAD文件处理和PDF导出功能从用户交互代码中分离出来,封装到一个独立的、可测试的
exportLayout方法中。main方法现在只负责处理控制台的输入和输出。 -
单元测试: 引入了
JUnit测试框架,并为核心的exportLayout方法编写了专门的单元测试。这些测试用例使用真实的CAD文件 (塔器.dxf,容器.dxf) 来验证:- 程序是否能成功生成PDF文件。
- 生成的PDF文件是否损坏(通过检查文件大小是否超过一个合理的阈值,如100KB)。
- 当指定的布局不存在或文件路径错误时,程序是否能抛出预期的异常。
这种方法带来了几个关键的好处:
- 可靠性: 自动化测试确保了每次代码变更后,核心功能依然能正常工作。
- 易于调试: 当测试失败时,能够快速定位到问题所在的代码块。
- 代码质量: 促使代码结构更清晰、模块化,易于维护和扩展。