| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- package cn.yunzhixue.ability.center.architecture;
- import com.tngtech.archunit.core.domain.JavaClass;
- import com.tngtech.archunit.core.importer.ImportOption;
- import com.tngtech.archunit.junit.AnalyzeClasses;
- import com.tngtech.archunit.junit.ArchTest;
- import com.tngtech.archunit.lang.ArchRule;
- import com.tngtech.archunit.base.DescribedPredicate;
- import java.util.Set;
- import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.noClasses;
- @AnalyzeClasses(
- packages = "cn.yunzhixue.ability.center.examsprint",
- importOptions = ImportOption.DoNotIncludeTests.class)
- class ExamSprintArchitectureTest {
- private static final Set<String> CURRENT_DOMAIN_CONTRACT_DEBT = Set.of(
- "ExamSprintReport",
- "ExamSprintReportRenderer",
- "ExamSprintReportStorage");
- private static final Set<String> CURRENT_DOMAIN_JACKSON_DEBT = Set.of(
- "ExamSprintReport",
- "ExamSprintReportRenderer");
- @ArchTest
- static final ArchRule contracts_should_not_depend_on_inner_layers = noClasses()
- .that().resideInAPackage("..contracts..")
- .should().dependOnClassesThat().resideInAnyPackage(
- "..domain..",
- "..application..",
- "..infrastructure..",
- "..adapter.."
- );
- @ArchTest
- static final ArchRule infrastructure_should_not_depend_on_runtime_adapters = noClasses()
- .that().resideInAPackage("..infrastructure..")
- .should().dependOnClassesThat().resideInAnyPackage(
- "..adapter..",
- "..configuration.."
- );
- @ArchTest
- static final ArchRule new_domain_classes_should_not_depend_on_contracts = noClasses()
- .that().resideInAPackage("..domain..")
- .and(areNotNamed(CURRENT_DOMAIN_CONTRACT_DEBT))
- .should().dependOnClassesThat().resideInAPackage("..contracts..");
- @ArchTest
- static final ArchRule new_domain_classes_should_not_depend_on_jackson = noClasses()
- .that().resideInAPackage("..domain..")
- .and(areNotNamed(CURRENT_DOMAIN_JACKSON_DEBT))
- .should().dependOnClassesThat().resideInAnyPackage(
- "com.fasterxml.jackson.."
- );
- private static DescribedPredicate<JavaClass> areNotNamed(Set<String> simpleNames) {
- return new DescribedPredicate<>("are not named " + simpleNames) {
- @Override
- public boolean test(JavaClass input) {
- return !simpleNames.contains(input.getSimpleName());
- }
- };
- }
- }
|