From ab3c812aefaa68c637c47c83bb03dd8aac5906d8 Mon Sep 17 00:00:00 2001 From: Jinho Yim Date: Mon, 26 May 2025 13:09:34 +0900 Subject: [PATCH] Add document of logging for object resolution --- .../logging-for-object-resolution.mdx | 69 +++++++++++++++++++ .../logging-for-object-resolution.mdx | 69 +++++++++++++++++++ 2 files changed, 138 insertions(+) create mode 100644 docs/features/logging-for-object-resolution.mdx create mode 100644 i18n/ko/docusaurus-plugin-content-docs/current/features/logging-for-object-resolution.mdx diff --git a/docs/features/logging-for-object-resolution.mdx b/docs/features/logging-for-object-resolution.mdx new file mode 100644 index 0000000..5e88522 --- /dev/null +++ b/docs/features/logging-for-object-resolution.mdx @@ -0,0 +1,69 @@ +--- +sidebar_position: 5.5 +sidebar_label: Logging for Object Resolution +--- + +import { JavaKotlinCodeBlock, JavadocLink } from '@site/src/components/Custom'; +import { version } from '../data.json'; + +# Logging for Object Resolution + +AutoParams provides detailed logging capabilities that help you understand how objects are being resolved during test execution. The resolution log is printed to standard output during test execution, making it easy to trace how each value is generated. + +For example, resolving a `User` class now produces a detailed trace. Given the following class: + + +```java +@AllArgsConstructor +@Getter +public class User { + + private final UUID id; + private final String email; + private final String username; +} +``` + + +Running the following code: + + +```java +ResolutionContext context = new ResolutionContext(); +User user = context.resolve(); +``` + + +Will print a hierarchical visualization of the resolution process: + +```text +▼ Resolving for: class your.app.User +├── ▼ Resolving for: interface autoparams.generator.ConstructorResolver +│ ├── ▼ Resolving for: interface autoparams.generator.ConstructorExtractor +│ │ ✓ Resolved: autoparams.generator.DefaultConstructorExtractor@3b39e79b for: interface autoparams.generator.ConstructorExtractor +│ ✓ Resolved: autoparams.generator.CompositeConstructorResolver@6dded900 for: interface autoparams.generator.ConstructorResolver +│ +├── ▼ Resolving for: Parameter final java.lang.Long id +│ ✓ Resolved: 15775 for: Parameter final java.lang.Long id +│ +├── ▼ Resolving for: Parameter final java.lang.String email +│ ├── ▼ Resolving for: class autoparams.generator.EmailAddressGenerationOptions +│ │ ✓ Resolved: EmailAddressGenerationOptions[domains=["test.com"]] for: class autoparams.generator.EmailAddressGenerationOptions +│ ✓ Resolved: 27b1bb70-f355-421c-8823-72fb69e9e4e7@test.com for: Parameter final java.lang.String email +│ +├── ▼ Resolving for: Parameter final java.lang.String username +│ ✓ Resolved: username6942b0dc-da65-42ca-a756-4303fcb6328a for: Parameter final java.lang.String username +✓ Resolved: your.app.User@56835f2f for: class your.app.User +``` + +The log uses the following symbols to represent the resolution flow: +- `▼` indicates the start of a resolution attempt +- `├──` shows nested resolution steps +- `✓` indicates successful resolution +- Indentation levels represent the depth of the resolution chain + +This logging is particularly valuable when working with: +- Customizations +- Complex object hierarchies +- Dependency injection scenarios +- Debugging test failures related to object generation diff --git a/i18n/ko/docusaurus-plugin-content-docs/current/features/logging-for-object-resolution.mdx b/i18n/ko/docusaurus-plugin-content-docs/current/features/logging-for-object-resolution.mdx new file mode 100644 index 0000000..c05a5e0 --- /dev/null +++ b/i18n/ko/docusaurus-plugin-content-docs/current/features/logging-for-object-resolution.mdx @@ -0,0 +1,69 @@ +--- +sidebar_position: 5.5 +sidebar_label: 개체 해결을 위한 로깅 +--- + +import { JavaKotlinCodeBlock, JavadocLink } from '@site/src/components/Custom'; +import { version } from '../data.json'; + +# 개체 해결을 위한 로깅 + +AutoParams는 테스트 실행 중 개체가 어떻게 해결되는지 이해하는 데 도움이 되는 자세한 로그를 제공합니다. 해결 로그는 테스트 실행 중 표준 출력으로 제공되며 각 값이 어떻게 생성되는지 쉽게 추적할 수 있습니다. + +`User` 클래스를 해결하면 자세한 추적 정보가 생성되는 예를 살펴보겠습니다. 다음 클래스가 주어졌을 때, + + +```java +@AllArgsConstructor +@Getter +public class User { + + private final UUID id; + private final String email; + private final String username; +} +``` + + +다음 코드를 실행하면, + + +```java +ResolutionContext context = new ResolutionContext(); +User user = context.resolve(); +``` + + +해결 프로세스의 계층적 시각화를 출력합니다. + +```text +▼ Resolving for: class your.app.User +├── ▼ Resolving for: interface autoparams.generator.ConstructorResolver +│ ├── ▼ Resolving for: interface autoparams.generator.ConstructorExtractor +│ │ ✓ Resolved: autoparams.generator.DefaultConstructorExtractor@3b39e79b for: interface autoparams.generator.ConstructorExtractor +│ ✓ Resolved: autoparams.generator.CompositeConstructorResolver@6dded900 for: interface autoparams.generator.ConstructorResolver +│ +├── ▼ Resolving for: Parameter final java.lang.Long id +│ ✓ Resolved: 15775 for: Parameter final java.lang.Long id +│ +├── ▼ Resolving for: Parameter final java.lang.String email +│ ├── ▼ Resolving for: class autoparams.generator.EmailAddressGenerationOptions +│ │ ✓ Resolved: EmailAddressGenerationOptions[domains=["test.com"]] for: class autoparams.generator.EmailAddressGenerationOptions +│ ✓ Resolved: 27b1bb70-f355-421c-8823-72fb69e9e4e7@test.com for: Parameter final java.lang.String email +│ +├── ▼ Resolving for: Parameter final java.lang.String username +│ ✓ Resolved: username6942b0dc-da65-42ca-a756-4303fcb6328a for: Parameter final java.lang.String username +✓ Resolved: your.app.User@56835f2f for: class your.app.User +``` + +로그에서 다음 기호들을 사용하여 해결 흐름을 나타냅니다. +- `▼` 는 해결 시도의 시작을 나타냅니다. +- `├──` 는 중첩된 해결 단계를 표시합니다. +- `✓` 는 성공한 해결을 표시합니다. +- 들여쓰기 수준은 해결 체인의 깊이를 나타냅니다. + +이 로깅은 다음과 같은 작업에서 특히 유용합니다. +- 사용자 정의 +- 복잡한 개체 계층 구조 +- 의존성 주입 시나리오 +- 개체 생성 관련 테스트 실패 디버깅