본문으로 건너뛰기
버전: 11.x

개체 해결에 대한 로깅

AutoParams는 테스트 실행 중 개체가 어떻게 해결되는지 이해하는 데 도움이 되는 자세한 로그를 제공합니다. 해결 로그는 테스트 실행 중 표준 출력으로 제공되며 각 값이 어떻게 생성되는지 쉽게 추적할 수 있습니다.

User 클래스를 해결하면 자세한 추적 정보가 생성되는 예를 살펴보겠습니다. 다음 클래스가 주어졌을 때,

@AllArgsConstructor
@Getter
public class User {

private final UUID id;
private final String email;
private final String username;
}

다음 코드를 실행하면,

ResolutionContext context = new ResolutionContext();
User user = context.resolve();

해결 프로세스의 계층적 시각화를 출력합니다.

> Resolving for: class your.app.User
|-- > Resolving for: interface autoparams.generator.ConstructorResolver
| |-- > Resolving for: interface autoparams.generator.ConstructorExtractor
| | < Resolved(<1 ms): autoparams.generator.DefaultConstructorExtractor@5807ea46 for: interface autoparams.generator.ConstructorExtractor
| < Resolved(<1 ms): autoparams.generator.CompositeConstructorResolver@305289b3 for: interface autoparams.generator.ConstructorResolver
|
|-- > Resolving for: Parameter java.util.UUID id
| < Resolved(<1 ms): 2c792f91-2fb8-41c0-a7af-5bda64192949 for: Parameter java.util.UUID id
|
|-- > Resolving for: Parameter java.lang.String email
| |-- > Resolving for: class autoparams.generator.EmailAddressGenerationOptions
| | < Resolved(<1 ms): EmailAddressGenerationOptions[domains=["test.com"]] for: class autoparams.generator.EmailAddressGenerationOptions
| < Resolved(1 ms): bab83e7b-bb56-4acb-aef4-ee7b4db24121@test.com for: Parameter java.lang.String email
|
|-- > Resolving for: Parameter java.lang.String username
| < Resolved(<1 ms): username24cbc137-4990-414b-9af7-39ae7ce1b437 for: Parameter java.lang.String username
< Resolved(1 ms): your.app.User@33e4068 for: class your.app.User

로그에서 다음 기호들을 사용하여 해결 흐름을 나타냅니다.

  • > 는 해결 시도의 시작을 나타냅니다.
  • |-- 는 중첩된 해결 단계를 표시합니다.
  • < 는 성공한 해결을 표시합니다.
  • 들여쓰기 수준은 해결 체인의 깊이를 나타냅니다.

이 로깅은 다음과 같은 작업에서 특히 유용합니다.

  • 사용자 정의
  • 복잡한 개체 계층 구조
  • 의존성 주입 시나리오
  • 개체 생성 관련 테스트 실패 디버깅