【发布时间】:2015-09-03 18:21:34
【问题描述】:
最近发现一个错误是由于在将文本解析为数字时未指定InvariantCulture,我想加强我们的单元测试,以便他们能够发现问题。我编写了一个新测试,将当前文化更改为具有不同数字格式的文化,重新运行其中一种现有测试方法,然后将文化重新设置。不幸的是,文化变化也影响了其他测试方法。有没有办法做到这一点,使测试不交互?
我确实发现将文化设置测试放在文件的最后会“解决”问题,但我讨厌依赖测试顺序,因为它不能保证。
在以下示例中,如果系统文化为 "en-EN"、TestMethod1 和 TestMethod2,如果它们自己运行将成功。如果我同时运行所有方法,它们都会失败。
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethodGerman()
{
var originalCulture = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");
TestMethod1();
Thread.CurrentThread.CurrentCulture = originalCulture;
}
[TestMethod]
public void TestMethod1()
{
double value = Double.Parse("3.00");
Assert.AreEqual(value, 3.0);
}
[TestMethod]
public void TestMethod2()
{
double value = Double.Parse("4.00");
Assert.AreEqual(value, 4.0);
}
}
【问题讨论】:
标签: c# unit-testing mstest cultureinfo