如何使用 ArchUnitTest 检查泛型中的依赖关系?

How to check dependencies in generics with ArchUnitTest?

我们有一个规则,包“foo”不应依赖于包“bar”

noClasses()
                .that()
                .resideInAPackage("com.foo..")
                .should()
                .dependOnClassesThat(resideInAPackage("com.bar.."))
                .check(javaClasses);

我们在“foo”中有一个接口,使用“bar”有两种方式,直接和通过泛型。

public interface IFoo {

    BarClass getBar();

    Optional<BarClass> getOptionalBar();

    List<BarClass> getListBar();
}

“BarClass getBar();”被 ArchUnitTest 捕获,但是“Optional getOptionalBar()”和“List getListBar()”在测试中没有给我们任何错误。有人知道如何让他们也失败吗?

ArchUnit 0.20.0 引入了对通用 return 类型的支持。 在当前版本中,泛型方法 return 类型的类型参数应自动​​被视为 class 依赖项。