PHpullh
학습 라이브러리/Java/아키텍처 테스트 (ArchUnit)

JAVA · 테스트

아키텍처 테스트 (ArchUnit)

ArchUnit으로 아키텍처 규칙을 코드로 검증합니다.

테스트고급ArchUnit아키텍처테스트레이어규칙검증

핵심 설명

ArchUnit으로 아키텍처 규칙을 코드로 검증합니다.

Java code

// ArchUnit 의존성: com.tngtech.archunit:archunit-junit5:1.2+

// import com.tngtech.archunit.junit.*;
// import com.tngtech.archunit.lang.*;
// import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.*;
// import static com.tngtech.archunit.library.Architectures.*;

// @AnalyzeClasses(packages = "com.example")
// class ArchitectureTest {
//
//     // 레이어 규칙
//     @ArchTest
//     static final ArchRule layerRule = layeredArchitecture()
//         .consideringAllDependencies()
//         .layer("Controller").definedBy("..controller..")
//         .layer("Service").definedBy("..service..")
//         .layer("Repository").definedBy("..repository..")
//         .whereLayer("Controller").mayOnlyBeAccessedByLayers()
//         .whereLayer("Service").mayOnlyBeAccessedByLayers("Controller")
//         .whereLayer("Repository").mayOnlyBeAccessedByLayers("Service");
//
//     // 네이밍 규칙
//     @ArchTest
//     static final ArchRule controllerNaming = classes()
//         .that().resideInAPackage("..controller..")
//         .should().haveSimpleNameEndingWith("Controller");
//
//     // 의존성 규칙
//     @ArchTest
//     static final ArchRule noCyclic = slices()
//         .matching("com.example.(*)..")
//         .should().beFreeOfCycles();
//
//     // 어노테이션 규칙
//     @ArchTest
//     static final ArchRule serviceAnnotation = classes()
//         .that().resideInAPackage("..service..")
//         .should().beAnnotatedWith(org.springframework.stereotype.Service.class);
// }

class Main {
    public static void main(String[] args) {
        System.out.println("ArchUnit: 아키텍처 규칙을 단위 테스트로 검증합니다.");
        System.out.println("CI에서 실행하여 아키텍처 위반을 자동으로 감지합니다.");
    }
}

학습 팁

ArchUnit을 CI 파이프라인에 포함하면 아키텍처 규칙 위반을 자동으로 감지합니다. 팀 전체의 아키텍처 규칙 준수를 강제할 수 있습니다.

주의할 점

너무 많은 규칙을 한 번에 추가하면 기존 코드에서 대량의 위반이 발견됩니다. 점진적으로 규칙을 추가하세요.

자주 묻는 질문

아키텍처 테스트 (ArchUnit)란 무엇인가요?

ArchUnit 으로 아키텍처 규칙을 코드로 검증합니다.

아키텍처 테스트 (ArchUnit) 학습 시 주의할 점은 무엇인가요?

너무 많은 규칙을 한 번에 추가하면 기존 코드에서 대량의 위반이 발견됩니다. 점진적으로 규칙을 추가하세요.