最も簡単なアプローチは匿名の代理人を使用することですが、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"));
}
}