dxfedit/pure/docs/README.md
puzzlesion bcefe9c927 chore: add test files, results, and miscellaneous updates
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
2025-09-12 17:21:28 +08:00

2.1 KiB
Raw Blame History

项目背景与理念

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
    • 当指定的布局不存在或文件路径错误时,程序是否能抛出预期的异常。

这种方法带来了几个关键的好处:

  • 可靠性: 自动化测试确保了每次代码变更后,核心功能依然能正常工作。
  • 易于调试: 当测试失败时,能够快速定位到问题所在的代码块。
  • 代码质量: 促使代码结构更清晰、模块化,易于维护和扩展。