pix*_*xel 2 java architecture archunit
我偶然发现了以下片段。
ArchRule myRule = classes()
.that().resideInAPackage("..core..")
.should().onlyBeAccessed().byAnyPackage("..controller..");
Run Code Online (Sandbox Code Playgroud)
我想知道如何否定这个条件,所以测试应该检查core包是否未被controller包访问?
您可以使用ClassesShould.accessClassesThat(),这(正如其 JavaDoc 所建议的那样)通常以否定方式更有意义:
import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.noClasses;\n// ...\n\n noClasses()\n .that().resideInAPackage("..controller..")\n .should().accessClassesThat().resideInAPackage("..core..");\nRun Code Online (Sandbox Code Playgroud)\n您也可以坚持classes()并用GivenClasses.should(\xe2\x80\xa6)或GivenClassesConjunction.should(\xe2\x80\xa6)灵活搭配 ArchCondition。对于您的情况,它可以轻松地由预定义的条件和谓词组成:
import static com.tngtech.archunit.core.domain.JavaClass.Predicates.resideInAPackage;\nimport static com.tngtech.archunit.lang.conditions.ArchConditions.accessClassesThat;\nimport static com.tngtech.archunit.lang.conditions.ArchConditions.not;\nimport static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes;\n// ...\n\n classes()\n .that().resideInAPackage("..controller..")\n .should(not(accessClassesThat(resideInAPackage("..core.."))));\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1287 次 |
| 最近记录: |