Jef*_*ffH 5 .net continuous-integration unit-testing mstest internationalization
我们使用.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,每个运行一次测试代码,但Visual Studio告诉我:
错误2'ClassToExtendTestMethodAttribute':无法从密封类型'Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute'派生
对于TestClassAttribute也是如此.
一种想法可能是从方法中的配置文件中读取区域性,TestInitialize
以便与 一起使用Thread.CurrentThread.CurrentCulture
,并将此方法放入基本单元测试类(所有其他测试类都应该派生自该类)。如果这样做成功了,您可以mstest
在循环中调用批处理文件,并在每个步骤后更改配置文件(例如从“en-us”到“fr-FR”)。
或者,这里有一个指向“单元测试可扩展性示例”的指针,我没有使用过它,但可能会对您有所帮助。
归档时间: |
|
查看次数: |
1229 次 |
最近记录: |