我们使用 .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,但我不希望我们团队的开发人员不得不复制粘贴他们的测试的副本,每种文化一个。这对他们来说将是额外的工作,并且仅因文化而异的重复将难以维护并且容易出错。
我想知道从 TestMethodAttribute 派生一个类并让它循环遍历我所有的语言资源 DLL,为每个 DLL 运行一次测试代码,但 Visual Studio 告诉我:
错误 2“ClassToExtendTestMethodAttribute”:不能从密封类型“Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute”派生
与 TestClassAttribute 相同。