C# xUnit文化感知测试
一分钟前,我在Visual Studio 2017创建了一个新的xunit测试项目。该项目包含xunit nuget包,它是NetCore2.0的2.3.1版本 我在上看到注释的用法;但是,当我尝试使用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
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;
}
}