package com.tngtech.archunit.exampletest.junit; import com.tngtech.archunit.junit.AnalyzeClasses; import com.tngtech.archunit.junit.ArchIgnore; import com.tngtech.archunit.junit.ArchTest; import com.tngtech.archunit.junit.ArchUnitRunner; import com.tngtech.archunit.lang.ArchRule; import org.junit.runner.RunWith; import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes; import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.noClasses; @ArchIgnore @RunWith(ArchUnitRunner.class) @AnalyzeClasses(packages = "com.tngtech.archunit.example") public class LayerDependencyRulesWithRunnerTest { @ArchTest public static final ArchRule services_should_not_access_controllers = noClasses().that().resideInAPackage("..service..") .should().accessClassesThat().resideInAPackage("..controller.."); @ArchTest public static final ArchRule persistence_should_not_access_services = noClasses().that().resideInAPackage("..persistence..") .should().accessClassesThat().resideInAPackage("..service.."); @ArchTest public static final ArchRule services_should_only_be_accessed_by_controllers_or_other_services = classes().that().resideInAPackage("..service..") .should().onlyBeAccessed().byAnyPackage("..controller..", "..service.."); }