.resx ファイルを使用して、アプリを複数の言語に国際化します。自動化された単体テストは独自のアセンブリにあり、次のように CI (Jenkins) 内のコマンド ラインからそのプロジェクトで mstest を実行します。
mstest.exe /testcontainer:unittests.dll /category:"!TemporaryExclude" /resultsfile:UnitTests.trx
英語以外のサポートされているカルチャのいずれかに設定されたマシンで実行すると、特定の単体テストが失敗するケースが見つかりました。CI で、現在の en-us を含む各カルチャに対して単体テストを実行したいと考えています。これは他の人が遭遇した問題に違いありませんが、私は何も見つけていません。
特定のカルチャに対して mstest を実行する方法はありますか? mstest.exe のコマンド ライン ドキュメントに何も表示されませんでした
テストで Thread.CurrentThread.CurrentCulture と Thread.CurrentThread.CurrentUICulture を指定できることはわかっていますが、チームの開発者がテストの複製をカルチャごとに 1 つずつコピー アンド ペーストする必要はありません。彼らにとって余分な作業であり、文化だけが異なる複製を持つことは、維持が難しく、エラーが発生しやすくなります.
TestMethodAttribute からクラスを派生させ、すべての言語リソース DLL を循環させて、それぞれに 1 回ずつテスト コードを実行することについて疑問に思いましたが、Visual Studio は次のように教えてくれました。
エラー 2 'ClassToExtendTestMethodAttribute': シール型 'Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute' から派生できません
TestClassAttribute についても同様です。