0

我正在使用 JUnit 5 评估 ArchUnit 0.13.1 并尝试编写如下规则:

    @ArchTest
    private final ArchRule annotationInheritance = ArchRuleDefinition.classes()
            .that().areAnnotatedWith(MyAnnotation.class)
            .should().onlyHaveSubclassesThat().areAnnotatedWith(MyAnnotation.class);

问题是 ArchUnit 中没有方法“onlyHaveSubclassesThat()”。我确信可能还有另一种方法可以实现相同的目标,但是如何实现呢?

4

1 回答 1

0

您可以将检查应用于继承某个类的子类:

classes()
    .that().areAssignableTo(CanBeAnnotated.Predicates.annotatedWith(MyAnnotation.class))
    .should().beAnnotatedWith(MyAnnotation.class);
于 2020-09-19T14:07:29.337 回答