C# xUnit文化感知测试

C# xUnit文化感知测试,c#,unit-testing,asp.net-core-2.0,data-annotations,xunit,C#,Unit Testing,Asp.net Core 2.0,Data Annotations,Xunit,一分钟前,我在Visual Studio 2017创建了一个新的xunit测试项目。该项目包含xunit nuget包,它是NetCore2.0的2.3.1版本 我在上看到注释的用法;但是,当我尝试使用UseCultureannotation时,我遇到了如下错误: 找不到类型或命名空间名称“UseCultureAttribute” 我错过了什么 [Fact, UseCulture("en-US")] public void Test1() { double a = 5.01; s

一分钟前,我在Visual Studio 2017创建了一个新的xunit测试项目。该项目包含xunit nuget包,它是NetCore2.0的2.3.1版本

我在上看到注释的用法;但是,当我尝试使用
UseCulture
annotation时,我遇到了如下错误:

找不到类型或命名空间名称“UseCultureAttribute”

我错过了什么

[Fact, UseCulture("en-US")]
public void Test1()
{
    double a = 5.01;
    string aStr = a.ToString();

    Assert.Equal("5.01", aStr);
}

在撰写本文时,我在.NETCore2.0中也找不到这一点。 下面是一个例子(基于对您的问题的评论中给出的答案)。 您只需要添加
xunit.core
nuget包就可以了

我的示例在测试之前将其设置为
InvariantCulture
(并在测试之后恢复),您可以将其调整为所需的区域性,或者使用中提供的更通用的选项


据认为,它不包括在核心,也不会。示例实现可以在@JonathonChase中找到,谢谢您的评论。我搜索了一下,找到了
CulturedTheory
CulturedFact
()。但是,这些注释也不起作用。你知道文化感知测试有什么好的解决方案吗?是的,看看我发布的第二个链接。它是
UseCultureAttribute
的实现代码。你应该可以把它放到你的项目中,然后继续。在我的问题中,我也发布了相同的链接。但是,我想知道,是否有内置的解决方案或支持的扩展(另一个nuget包)?
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class UseInvariantCultureAttribute : BeforeAfterTestAttribute
{
    private CultureInfo originalCulture;
    private CultureInfo originalUICulture;

    public override void Before(MethodInfo methodUnderTest)
    {
        this.originalCulture = Thread.CurrentThread.CurrentCulture;
        this.originalUICulture = Thread.CurrentThread.CurrentUICulture;

        Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
        Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
    }

    public override void After(MethodInfo methodUnderTest)
    {
        Thread.CurrentThread.CurrentCulture = this.originalCulture;
        Thread.CurrentThread.CurrentUICulture = this.originalUICulture;
    }
}