最も簡単な方法は、しかし、異文化に対する結果を区別することは困難であるので、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"));
}
}
これは間違いなく正しい答えです。私はそれに印を付けました。 しかし、私のプロフィールからわかるように、私は新しいユーザーであり、質問の重要な情報を忘れてしまった。私の会社はVB.NETのショップで、VS2010までステートメントlamdasを取得しません。 これは私が実際のテストコードをプライベートメソッドに入れ、関数ポインタをDo()メソッドに渡す必要があるように思われるため、私が暗に指摘したものです。これは、私の意見では、テスト切断を作成します。 MSTestフレームワークを拡張するための主要な作業が不足していますか? –
残念ながら、MSTestにはこのような装飾のための拡張性のストーリーはありません。したがって、フレームワークや言語を変更しない限り、実装の選択肢は厳しく制限されます。 –