如何在ArchUnit测试中排除指定类?
解决ArchUnit规则排除特定类的问题
你可以通过在被检查类的条件中添加排除特定全限定类名的约束,让目标类不受该访问规则限制。修改后的代码如下:
val rule: ArchRule = classes().that() .resideInAPackage("$base..") .and().doNotHaveFullyQualifiedName("$base.myClass") // 排除指定类 .should().onlyBeAccessed().byClassesThat() .resideInAPackage("$base..") rule.check(importedClasses)
说明
- 核心是用
doNotHaveFullyQualifiedName方法精准排除$base.myClass,这个方法支持传入类的完整全限定名,能实现比按包排除更细粒度的控制。 - 修改后,除
$base.myClass外,$base包及其子包下的所有类仍会被规则检查,确保它们只能被同包内类访问;被排除的类则不受此规则约束,可被包外类访问。
内容的提问来源于stack exchange,提问作者HomeLighter
相关产品推荐
相关产品推荐

