Skip to content

ArchUnit 의존성에 대해서 테스트 및 실 사용예시가 정리되어 있습니다

Notifications You must be signed in to change notification settings

Tianea2160/arch-unit-test-example

Repository files navigation

ArchUnit Test Guide

이 문서는 ArchUnit을 사용하여 특정 아키텍처 규칙을 검증하는 방법을 설명합니다.
테스트 대상은 다음과 같습니다.

  • @AuditTable 어노테이션이 적용된 클래스의 테이블 네이밍 규칙 검증
  • Request 및 Response DTO 클래스의 필드에 @Schema 어노테이션 적용 여부 검증

사용 예시

1. @AuditTable 어노테이션 검사

  • @AuditTable이 적용된 클래스의 테이블 이름이 _log로 끝나는지 확인합니다.
  • 네이밍 규칙을 준수하지 않을 경우 테스트가 실패합니다.

예제 코드

@AuditTable(value = "user_log") // 올바른 네이밍
public class UserEntity { }
@AuditTable(value = "user_history") // 테스트 실패
public class UserEntity { }

실행 결과

Class org.example.entity.UserEntity has @AuditTable with name 'user_history', but it should end with '_log'

2. DTO 필드에 @Schema 어노테이션 적용 검사

  • Request 및 Response DTO 클래스를 대상으로 모든 필드가 @Schema 어노테이션을 포함하는지 확인합니다.
  • @Schema가 적용되지 않은 필드가 있을 경우 테스트가 실패합니다.

예제 코드

public class LoginRequestDto {
    @Schema(description = "사용자 아이디") // 적용됨
    private String username;

    @Schema(description = "비밀번호") // 적용됨
    private String password;
}
public class UserResponseDto {
    @Schema(description = "사용자 ID") // 적용됨
    private Long id;

    private String username; // @Schema 없음 → 테스트 실패
}

실행 결과

Field 'username' in class org.example.dto.UserResponseDto does not have @Schema annotation

실행 방법

1. Gradle을 사용하여 테스트 실행

./gradlew test

2. Maven을 사용하여 테스트 실행

mvn test

3. 특정 ArchUnit 테스트만 실행

./gradlew test --tests "org.example.com.archunitjavatest.AuditTableNamingTest"
./gradlew test --tests "org.example.com.archunitjavatest.SchemaAnnotationTest"

프로젝트 파일 구조

/src/test/java/org/example/com/archunitjavatest/
 ├── AuditTableNamingTest.java  // `@AuditTable` 네이밍 규칙 검사
 ├── SchemaAnnotationTest.java  // DTO 필드에 `@Schema` 어노테이션 적용 검사
 ├── ArchUnitTestConfig.java    // ArchUnit 설정 파일 (필요시)

요구사항

  • Java 17 이상
  • Gradle 또는 Maven 빌드 시스템
  • ArchUnit 라이브러리
    dependencies {
        testImplementation 'com.tngtech.archunit:archunit-junit5:1.1.0'
        testImplementation 'org.hibernate:hibernate-envers:6.2.0.Final' // `@AuditTable` 검사용
    }

참고 자료


결론

이 프로젝트는 아키텍처 규칙을 자동으로 검증하기 위한 테스트를 포함하고 있습니다.

  • @AuditTable 어노테이션이 적용된 테이블의 네이밍 규칙을 강제할 수 있습니다.
  • DTO 클래스의 모든 필드에 @Schema 어노테이션이 적용되었는지 확인할 수 있습니다.

테스트를 실행하면 Swagger 문서화를 강제하고, 테이블 네이밍 규칙을 자동으로 검증할 수 있습니다.

About

ArchUnit 의존성에 대해서 테스트 및 실 사용예시가 정리되어 있습니다

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Contributors 2

  •  
  •  

Languages