Spaces:
Build error
Build error
| package com.dalab.discovery.common; | |
| import org.junit.jupiter.api.Test; | |
| import org.junit.jupiter.api.Timeout; | |
| import com.tngtech.archunit.core.domain.JavaClasses; | |
| import com.tngtech.archunit.core.importer.ClassFileImporter; | |
| import com.tngtech.archunit.core.importer.ImportOption; | |
| import com.tngtech.archunit.lang.ArchRule; | |
| import com.tngtech.archunit.lang.syntax.ArchRuleDefinition; | |
| public class TechnicalStructureTest { | |
| private static final String BASE_PACKAGE = "com.dalab.discovery"; | |
| public void respectsTechnicalArchitectureLayers() { | |
| JavaClasses importedClasses = new ClassFileImporter() | |
| .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS) | |
| .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_ARCHIVES) | |
| .importPackages(BASE_PACKAGE); | |
| // Basic rule - all web controllers should only depend on interfaces, not | |
| // implementations | |
| ArchRule controllerRule = ArchRuleDefinition.classes() | |
| .that().haveNameMatching(".*Controller") | |
| .should().onlyDependOnClassesThat() | |
| .haveNameNotMatching(".*Impl"); | |
| controllerRule.check(importedClasses); | |
| } | |
| } | |