如何确保在所有 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 单元测试类型 - 不工作