전체 [xUnit.net]에서 한 번만 초기화 처리할 정의
이 기사의 대상은NET Core 3.1 또는NET5.테스트의 프레임워크는 xUnit.net입니다.
.NET Core 이후 개인은 다음과 같은 장면이 필요할 때가 있다[1].예를 들어 진행하다.
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
다음은 수행하고자 하는 테스트의 예[2].
Encoding.RegisterProvider
의 준비 없이 집행하면 실패할 수 있다.MyTest.cs
using Microsoft.VisualBasic;
using Xunit;
public class MyTest
{
[Fact]
public void Test()
{
var result = Strings.StrConv("1", VbStrConv.Narrow);
Assert.Equal("1", result);
}
}
1. IClassFixture
xUnit.net의 유파를 따르는 방법.매번 시험반이 증가
IClassFixture
할 때마다 번거롭거나 잊어버리기 쉬운 단점이 있다.EncodingFixture.cs
public class EncodingFixture
{
public EncodingFixture()
{
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
}
}
MyTest.cspublic class MyTest : IClassFixture<EncodingFixture>
{
[Fact]
public void Test()
{
var result = Strings.StrConv("1", VbStrConv.Narrow);
Assert.Equal("1", result);
}
}
2. Xunit.DependencyInjection
다음 NuGet을 참조하십시오.
자세한 사항은 지아이허브의 README 등을 보시고, 평소 제네릭 호스트 스타일로 제작
Startup
반을 만들면 가장 먼저 불러낸다.로거와 단식 서비스 등은 조정 가능한 범위가 넓다[3].그런 걸 변경하고 싶으면 나도 같이
Encoding.RegisterProvider
가입하는 게 좋아.타사 누겟을 추가하려면 억지로 말하기가 어렵다.Startup.cs
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
}
}
3. [ModuleInitializer]
C#9.0 추가 사양입니다.NET5 이후에는 사용 가능합니다.이 방법은 원래 시험에 국한되지 않고 사용할 수 있다.
이번 예
Encoding.RegisterProvider
라면 가장 가벼운 것 같아요.Initializer.cs
internal static class Initializer
{
[ModuleInitializer]
public static void Initialize()
{
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
}
}
각주Windows 명령 프롬프트로 내보낼 때StrConv를 사용할 때 등등.↩︎
Microsoft.VisualBasic
.NET Core는 나중에 NuGet에서 가져올 수 있습니다.https://www.nuget.org/packages/Microsoft.VisualBasic/ ↩︎ 하나의 예로 테스트 시
ITestOutputHelper
에만 기록기에 등록하는 용도 등이 있다.직접 XunitDependency Injection을 사용하지 않았지만 참고 가치가 있는 글: https://www.meziantou.net/how-to-get-asp-net-core-logs-in-the-output-of-xunit-tests.htm↩︎Reference
이 문제에 관하여(전체 [xUnit.net]에서 한 번만 초기화 처리할 정의), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/shimat/articles/b85b2313906921텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)