xUnit文化感知测试

4

我刚刚在Visual Studio 2017中创建了一个新的xunit测试项目。该项目包含xunit nuget包,版本为2.3.1,适用于net-core 2.0。

我看到xUnit Sample中使用了注释; 但是,当我尝试使用UseCulture注释时,我遇到了以下错误:

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

我错过了什么?

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

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

@JonathonChase,感谢您的评论。我进行了一些搜索,并找到了CulturedTheoryCulturedFact(https://github.com/xunit/xunit/tree/master/test/test.utility/CultureAwareTesting)。然而,这些注释也不起作用。您知道有关文化意识测试的任何好的解决方案吗? - Adem Catamak
3
好的,请看我发的第二个链接。这是一个“UseCultureAttribute”的实现代码。您应该只需将其放入您的项目中并继续操作。 - Jonathon Chase
1
在我的问题中,我也发布了相同的链接。但是,我想知道是否有内置解决方案或支持的扩展(另一个NuGet包)? - Adem Catamak
1
我创建了一个NuGet包,其中实现了CulturedTheoryCulturedFact。 GitHub项目可以在这里找到。 - Stef Heyenrath
1个回答

0

写作时,我无法在.NET Core 2.0中找到这个功能。以下是一个示例(基于您问题评论中提供的link)。 您只需要添加xunit.core NuGet包即可使其正常工作。

我的示例将其设置为InvariantCulture,然后进行测试(并在测试后恢复),您可以根据需要调整此设置或使用link中提供的更多功能选项。

[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;
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接