xUnit文化意识测试

问题描述 投票:1回答:1

我在一分钟前在Visual Studio 2017上创建了一个新的xunit测试项目。该项目包含xunit nuget包,它是net-core 2.0的2.3.1版本

我在xUnit Sample看到了注释的用法;但是,当我尝试使用UseCulture注释时,我遇到了这样的错误:

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

我错过了什么?

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

    Assert.Equal("5.01", aStr);
}
c# unit-testing asp.net-core-2.0 data-annotations xunit
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;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.