[Test] ArchUnit 의존성 테스트
ArchUnit
ArchUnit?
시스템의 아키텍처를 정의하고, 이에 맞춰 코드를 작성해야 함. 아키텍처 준수 여부에 대한 확인할 수 있는 기능을 제공하는 것이 ArchUnit
.
즉, ArchUnit은 애플리케이션이 주어진 아키텍처 규칙을 준수하는지 확인할 수 있는 테스트 라이브러리.
ArchUnit 기능
- 패키지 간 의존 관계
- 클래스 간 의존 관계
- 클래스와 패키지 포함 관계
- 상속 관계 검사
- 어노테이션 검사
- 레이어 아키텍처 검사
- 순환 참조 검사
ArchUnit Dependency
JUnit4 : archunit-junit4 의존성 추가
<dependency>
<groupId>com.tngtech.archunit</groupId>
<artifactId>archunit-junit4</artifactId>
<version>0.23.1</version>
<scope>test</scope>
</dependency>
testImplementation 'com.tngtech.archunit:archunit-junit4:0.23.1'
JUnit5 : arch unit-junit5 의존성 추가
<dependency>
<groupId>com.tngtech.archunit</groupId>
<artifactId>archunit-junit5</artifactId>
<version>0.23.1</version>
<scope>test</scope>
</dependency>
testImplementation 'com.tngtech.archunit:archunit-junit5:0.23.1'
ArchUnit 예시
user 패키지
@Test
void user_package() {
JavaClasses classes = new ClassFileImporter().importPackages("com.example.demo");
ArchRule orderPackageRule = classes().that().resideInAPackage("..user..")
.should().onlyBeAccessed().byClassesThat().resideInAPackage("..user..");
orderPackageRule.check(classes);
}
참조
- https://www.archunit.org/userguide/html/000_Index.html
- https://www.baeldung.com/java-archunit-intro
- https://d2.naver.com/helloworld/9222129