当前位置: 首页 > 知识库问答 >
问题:

ArchUnit层测试:如何排除特定的类?

彭阳荣
2023-03-14

在ArchUnit-Test中,是否有可能从分层测试条件中排除特定的类?

<root>
+- A      <-- contains a factory class referring to B, C and D.
   +-B
   +-C
   +-D
ArchRule rule = Architectures.layeredArchitecture()
    .layer("A").definedBy("..a")
    .layer("B").definedBy("..a.b..")
    .layer("C").definedBy("..a.c..")
    .layer("D").definedBy("..a.d..")
    .whereLayer("A").mayOnlyBeAccessedByLayers("B", "C", "D", ... and others ...)
    .whereLayer("B").mayNotBeAccessedByAnyLayer() // except by "FactoryClass" in A
    .whereLayer("C").mayNotBeAccessedByAnyLayer() // except by "FactoryClass" in A
    .whereLayer("D").mayNotBeAccessedByAnyLayer() // except by "FactoryClass" in A

希望我能说清楚...

共有1个答案

葛威
2023-03-14

体系结构的层不一定必须与包1:1对应。
可以使用.layer(“A”).definedby(DescripedPredicate<?super JavaClass>)从层A中排除FactoryClass

或者,您也可以将其保留在层A,但使用LayeredArchitecture.ignoreDependency排除其依赖项。

 类似资料:
  • 在我的根项目中,我有两个子项目具有这种包结构。 在项目1中,我有一个用大规定义的类,就像这样 问题是,如果我运行该测试,它也会分析项目2中的所有内容。我如何排除包com.app.api?

  • 为了外部化用户界面字符串,我们使用支持的“消息类”方法,例如在Eclipse和其他IDE中。这种方法要求在每个需要一些用户界面字符串的包中,必须有一个类“消息”,该类提供一个静态方法,通过该方法可以获得实际的字符串以显示给用户。使用Java的资源机制在内部访问/获取字符串以实现国际化。 特别是在一些重构之后,我们一次又一次地从一个类中意外导入来自不同包的消息。 因此,我想创建一个archunit规

  • 我编写了我的第一个ArchUnit测试: 这个项目是用Maven构建的,所以类在不同的目录中。 将名称以“tests”或其他东西结尾的类分开是不够的,因为有许多类不是测试,而是只存在于测试类路径中。

  • 问题内容: 最近,我在Java项目的pom.xml文件中指定以下内容,偶然发现了一种通过jUnit并行执行测试的简单方法: 我发现有2个测试类(我们称它们为“ badtestclass1”和“ badtestclass2”)由于编写测试的方式而不断受到这种并行执行的惩罚。理想情况下,我会重构这些测试类以使其表现更好,但是在此期间,我想知道是否存在一种巧妙的方法来“排除”这些特定的类以使其无法并行执

  • 问题内容: 我的文件夹包含单元测试和功能测试。功能测试的类路径中有单词,而单元测试中没有。那么,如何仅运行单元测试? 非常感谢你。 PS :我知道很容易使用“包含”逻辑来选择测试。例如,仅在我的情况下运行功能测试,我可以简单地使用此功能。 但是,我不知道如何以简单的方式排除测试。 顺便说一句,我正在使用gradle 1.11。 问题答案: 任务的文档通过一个示例和所有内容对其进行了说明: