在 Java 中使用 ArchUnit 强制实施架构

主要观点:

  • 用 ArchUnit 可通过单元测试为架构定义规则,开发者构建应用时应遵循架构,文档不一定被所有人阅读,ArchUnit 是便捷方式,测试违规时会失败。
  • 介绍了 ArchUnit 的基础知识、先决条件(架构风格等知识),以基本 Spring Boot 应用为例验证架构规则,包括包依赖检查、排除测试类、层检查等。
  • Taikai 库为各种技术提供预定义规则并扩展了 ArchUnit 库,如在示例中展示其各种规则及使用方法,包括出现的问题及解决。

关键信息:

  • ArchUnit:可在单元测试中定义架构规则,测试失败时通知开发者架构违规。
  • Taikai:提供预定义规则,可快速应用,存在一些配置问题需注意。
  • 示例:基本 Spring Boot 应用的包结构及不同规则的验证示例,如包依赖检查、层检查等,以及 Taikai 库在不同示例中的应用及问题。

重要细节:

  • 添加archunit-junit5依赖用于包依赖检查等测试。
  • 通过@AnalyzeClasses注解确定要分析的包,@ArchTest注解定义规则。
  • classes().that().resideInAPackage("..service..").should().onlyBeAccessed().byAnyPackage("..controller..", "..service..")这样的规则定义。
  • 排除测试类时使用importOptions = ImportOption.DoNotIncludeTests.class
  • ArchUnit 提供的层检查规则及layeredArchitecture()的使用。
  • Taikai 库的各种规则,如noUsageOfDeprecatedAPIs等,以及checkAll方法用于检查所有规则。
  • 对于 Taikai 库的问题,如规则配置错误等,可通过仔细阅读文档和调整配置来解决。
阅读 16
0 条评论