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