xUnit文化意识测试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xUnit文化意识测试相关的知识,希望对你有一定的参考价值。

我在一分钟前在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);
}
答案

在撰写本文时,我无法在.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;
    }
}

以上是关于xUnit文化意识测试的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 .NET Core 运行 xUnit 测试

无法使用 .NET Core 运行 xUnit 测试

.Net core基于xUnit的单元测试查看测试覆盖率

.Net core基于xUnit的单元测试查看测试覆盖率

.Net core基于xUnit的单元测试查看测试覆盖率

如何在 jwt 授权的 web api 上执行 XUnit 测试?