如何确保在所有 Visual Studio 单元测试中使用不变区域性?

Posted

技术标签:

【中文标题】如何确保在所有 Visual Studio 单元测试中使用不变区域性?【英文标题】:How to ensure that the invariant culture is used in all Visual Studio unit tests? 【发布时间】:2018-04-23 20:46:15 【问题描述】:

开发人员在“小数点逗号”和“小数点”语言环境中都使用我们的解决方案。我们使用 Visual Studio 内置的单元测试引擎。如何确保测试在两个语言环境中都使用不变的文化,而不必在整个地方插入IFormatProviders?这是为了防止所有使用浮点数 string.Format 检查计算结果的测试在我们的某个语言环境中失败。

【问题讨论】:

【参考方案1】:

为所有单元测试和设置线程的当前文化创建一个公共基类:

Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;

(来自基本夹具的通用设置在 MSTest 和 NUnit 中都适用)。

如果您的代码可以产生新线程,您还可以set the default culture for new threads(需要 .NET 4.5):

CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture;
CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.InvariantCulture;

【讨论】:

以上是关于如何确保在所有 Visual Studio 单元测试中使用不变区域性?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Visual Studio项目和单元测试项目之间建立联系?

使用 Visual Studio 2019 对 BizTalk 2020 人工制品进行单元测试会导致 Intellisense 问题

Visual Studio单元测试调试

单元测试 - 扩展 Visual Studio 单元测试类型 - 不工作

安装编译器时如何确保 Visual Studio 更新注册表

如何在 Visual Studio 2005 中进行单元测试?