MbUnit有一个很好的属性:MultipleCultureAttribute。
我想知道在MSTest中是否有一种简单的方法可以做到这一点?到目前为止,我能想到的最好的是:
充其量,它可以被描述为丑陋......而且详细。
答案 0 :(得分:1)
最简单的方法可能是使用匿名委托,但请记住,MSTest会将此视为单一测试,因此可能难以区分不同文化的结果。
例如。匿名委托方法的粗略代码。
public static class MultipleCultures
{
public static void Do(Action action, params CultureInfo[] cultures)
{
CultureInfo originalCulture = Thread.CurrentCulture;
try
{
foreach (CultureInfo culture in cultures)
{
Thread.CurrentCulture = culture;
try
{
action();
}
catch
{
Console.WriteLine("Failed while running test with culture '{0}'.", culture.Name);
throw;
}
}
}
finally
{
Thread.CurrentCulture = originalCulture;
}
}
}
[TestClass]
public class Fixture
{
[TestMethod]
public void Test()
{
MultipleCultures.Do(() =>
{
// test code...
}, CultureInfo.InvariantCulture, CultureInfo.GetCulture("en-GB"));
}
}