0

我正在尝试验证以下依赖项:

关系

来源

在这张图中,红色的关系被禁止,绿色的关系被允许:

  • 适配器包中的任何类都不能继承自端口包中的类;
  • 适配器包中的任何类都可以使用(例如具有字段)端口包中的类;
  • 服务包中的任何类都不能使用端口包中的类(例如,有一个字段);
  • service包中的任何类都可以继承port包中的类;

如果可能的话,我想将这些验证添加到分层架构中。

谢谢你。

4

1 回答 1

0

LayeredArchitecture考虑层之间的所有 依赖关系。您不能禁止继承,但允许访问——反之亦然。我建议改为定义单独的特定规则:

@ArchTest
ArchRule adapter_should_not_inherit_from_port = noClasses()
    .that().resideInAPackage("….adapter")
    .should().beAssignableTo(JavaClass.Predicates.resideInAPackage("….port"));

@ArchTest
ArchRule service_should_not_access_port = noClasses()
    .that().resideInAPackage("….service")
    .should().accessClassesThat().resideInAPackage("….port");
于 2022-01-03T21:17:09.587 回答