package com.company.app.architecture; import com.tngtech.archunit.lang.ArchRule; import com.tngtech.archunit.lang.syntax.ArchRuleDefinition; import org.junit.Test; public class DomainComponentsTest extends ArchitectureTest { @Test public void domainClassesShouldOnlyBeAccessedByOtherDomainClassesOrTheApplicationLayer() { ArchRule rule = ArchRuleDefinition.classes() .that().resideInAPackage(DOMAIN_LAYER_PACKAGES) .should().onlyBeAccessed().byAnyPackage(DOMAIN_LAYER_PACKAGES, APPLICATION_LAYER_PACKAGES); rule.check(classes); } @Test public void domainClassesShouldOnlyDependOnDomainOrStdLibClasses() { ArchRule rule = ArchRuleDefinition.classes() .that().resideInAPackage(DOMAIN_LAYER_PACKAGES) .should().onlyDependOnClassesThat().resideInAnyPackage(DOMAIN_LAYER_PACKAGES, "java.."); rule.check(classes); } }