我有一个 ASP.NET Core 6 Web API 应用程序。 我正在使用 xUnit 编写单元测试。
我需要改变一些测试的文化。
根据这个答案这里,建议创建一个自定义属性
[UseCulture("en-US")]
,如xUnit示例这里所示。
然而,与此同时,我在here看到了这个讨论,其中指出 xUnit 团队无意将此属性合并到库中。
你有什么想法吗?
您是否发现该属性的实现方式存在任何类型的威胁?或者还有其他实施方面的问题吗?
为什么不将所需的区域性传递给您的测试,然后您控制该区域性的配置方式:
[InlineData("en-GB")]
[InlineData("en-US")]
[Theory]
public void MyTest(string culture)
{
// Arrange
Thread.CurrentThread.CurrentCulture = new CultureInfo(culture, false));
etc
}
正如 xUnit 的一位维护者对您的引用的 GitHub 问题做出的回应,他们没有看到
UseCultureAttribute
有任何问题,他们只是不想将其包含在他们的框架中。
我相信这是为了更好,因为维护者可以专注于维护框架。由于
UseCultureAttribute
是一个完美的例子,他们的框架支持扩展 xUnit,因此那些确实需要文化测试的人可以轻松地自己实现。
另一方面,如果有一个具有此属性的 xUnit 扩展包就太好了 😇