Microsoft.Extensions 통합

이러한 확장은 Microsoft.Testing.Platform(MTP)을 애플리케이션에서 이미 사용 중인 Microsoft.Extensions.* 라이브러리에 연결하므로, 플랫폼 및 확장 구성 요소가 코드의 나머지 부분과 동일한 인프라를 통해 전달됩니다. 각 확장에는 각 섹션에 설명된 대로 추가 NuGet 패키지가 필요합니다.

팁

Microsoft.Testing.Platform.MSBuild를 사용하는 경우 로깅 패키지는 생성된 진입점을 통해 자동으로 등록됩니다. 구성 패키지에는 인스턴스가 IConfiguration 필요하며 호스팅 패키지에는 사용자 지정 진입점이 TestingPlatformHostFactory 필요하므로 등록 섹션을 따릅니다.

로깅 브리지

로깅 브리지는 Microsoft.Testing.Platform 진단 로그를 ILogger(으)로 전달하므로, 플랫폼 및 확장 로그가 애플리케이션에서 이미 사용하는 동일한 Microsoft.Extensions.Logging 파이프라인을 통해 흐릅니다. 사용자 지정 MTP 로거 공급자를 작성하지 않고 기존 로깅 스택(콘솔, 디버그, Serilog, Application Insights, OpenTelemetry 또는 사용자 지정 ILoggerProvider )을 다시 사용할 수 있습니다. 이 확장에는 Microsoft.Testing.Extensions.Logging NuGet 패키지가 필요합니다.

메모

버전 2.3.0부터 MTP에서 사용할 수 있습니다. 이 확장은 실험적이며 옵션 및 출력 형식은 이후 버전에서 변경될 수 있습니다.

브리지는 플랫폼의 진단 로깅을 사용하는 경우에만 각 메시지를 전달합니다. 플랫폼의 유효 로그 수준이 None(기본값이며, --diagnostic를 전달하지 않는 한 적용됨)인 경우, 구성 델리게이트는 호출되지 않으며 로거 팩터리도 생성되지 않습니다. 설정한 범주별 필터는 ILoggingBuilder 플랫폼의 효과적인 진단 수준을 좁힐 수 있지만 확장할 수는 없습니다.

수동 등록

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddMicrosoftExtensionsLogging(logging => logging.AddConsole());

구성 스냅샷

실험적 Microsoft.Testing.Extensions.Configuration 패키지는 MTP의 구성 파이프라인에 애플리케이션 소유 IConfiguration 의 읽기 전용 스냅샷을 추가합니다.

테스트 애플리케이션을 빌드하기 전에 구성을 등록합니다.

var builder = await TestApplication.CreateBuilderAsync(args);
builder.AddMicrosoftExtensionsConfigurationSnapshot(configuration);

기본적으로 스냅샷은 순서 2를 사용합니다. MTP 명령줄 값(순서 0) 및 환경 변수(순서 1)가 우선하는 반면 스냅샷은 testconfig.json (순서 3)보다 우선합니다. 애플리케이션에 다른 우선 순위가 필요한 경우 다른 순서를 전달합니다.

MTP는 구성 파이프라인을 빌드할 때 BuildAsync 스냅샷을 읽습니다. 이후 변경 내용 및 다시 로드 알림은 전파되지 않습니다. 호출자는 구성의 소유권을 유지하고, 계층적 키는 표준 : 구분 기호를 유지하며, 등록은 현재 프로세스에만 적용됩니다. 라이브 구성 개체는 별도로 시작된 컨트롤러 또는 테스트 호스트 프로세스로 교차하지 않습니다.

호스트 통합

실험적 Microsoft.Testing.Extensions.Hosting 패키지는 애플리케이션이 소유하는 IHost 내부에서 MTP를 실행합니다. 호스트는 컴퍼지션 루트로 유지되며 서비스 공급자, 구성, 로깅, OpenTelemetry 공급자, 수명 및 삭제를 소유합니다.

생성된 진입점의 경우 Task<IHost>를 새로 생성되었지만 아직 시작되지 않은 TestingPlatformHostFactory를 반환하는 정규화된 정적 메서드로 설정합니다.

<TestingPlatformHostFactory>Contoso.Tests.TestHost.CreateHost</TestingPlatformHostFactory>

호스트가 OpenTelemetry 공급자를 관리하고 테스트 프로젝트가 TestingPlatformOpenTelemetryMode를 참조할 때 HostOwned를 Microsoft.Testing.Extensions.OpenTelemetry로 설정합니다. 생성된 진입점은 호스트를 만들고 삭제하고, 자체 등록된 확장을 유지하며, 명령줄 --help 및 --info에 대한 팩터리를 바이패스합니다.

사용자 지정 진입점의 경우 호스트를 호출 RunTestingPlatformAsync 하고 콜백을 통해 테스트 프레임워크를 등록합니다. 메서드는 구성 스냅샷을 가져오고, MTP 진단을 호스트에 ILoggerFactory전달하고, MTP 전에 호스트를 시작하고, 호스트 및 호출자 취소를 MTP에 연결하고, MTP 종료 코드를 반환하고, 블록에서 호스트를 finally 중지합니다. 호출자는 여전히 호스트를 삭제합니다.

MTP는 --list-tests json, JSON-RPC 서버 모드, dotnet test 프로토콜과 같은 기계 판독 가능 모드에 표준 출력을 사용하므로, 표준 출력에 호스트 시작, 종료, 로깅 및 익스포터 메시지가 표시되지 않도록 하세요. 또한 재시도, 크래시 덤프 또는 응답 중단 덤프 상황에서 컨트롤러 프로세스와 자식 프로세스가 해당 팩터리를 호출할 수 있으므로, 프로세스 재시작 확장과 함께 사용되는 호스트 팩터리 내에서는 배타적 전역 리소스의 사용을 피해야 합니다.

Important

구성 및 호스팅 API는 진단 ID를 TPEXP 사용하며 향후 릴리스에서 변경될 수 있습니다. MTP 2.5 미리 보기 패키지에서 사용할 수 있습니다.