首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用ArchUnit测试模块中的包依赖关系

使用ArchUnit测试模块中的包依赖关系
EN

Stack Overflow用户
提问于 2020-09-14 20:58:47
回答 1查看 90关注 0票数 0

我在使用ArchUnit进行以下测试时遇到了问题:

我希望确保某个包中的所有类只访问应用程序基包之外或某个子包(“”或“非"xor")中的类。

我得到的是:

代码语言:javascript
代码运行次数:0
运行
复制
@AnalyzeClasses(packages = "com.example")
public class ClassDependencies {
    @ArchTest
    static final ArchRule deps = classes.that()
        .resideInAPackage("com.example.mymodule.some.package")
        .should().onlyAccessClassesThat().resideOutsideOfPackage("com.example..")
        .orShould().resideInAnyPackage("com.example.package1..", "com.example.package2..);

问题是,or-条件应该在onlyAccessClassesThat()中。如果一个类同时拥有两种类型的访问,上面的公式就会失败,我希望它是有效的。

我怎样才能实现我想要的?感谢你在这方面的帮助...

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-19 21:18:55

您可以指定provide the predicate作为方法参数,并将其与另一个谓词组合:

代码语言:javascript
代码运行次数:0
运行
复制
classes
    .that().resideInAPackage("com.example.mymodule.some.package")
    .should().onlyAccessClassesThat(
        JavaClass.Predicates.resideOutsideOfPackage("com.example..")
        .or(JavaClass.Predicates.resideInAnyPackage("com.example.package1..", "com.example.package2.."))
    )
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63884832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档