繁体   English   中英

使用mstest,我可以针对我支持的每种语言运行单元测试套件吗?

[英]With mstest, can I run my unit test suite against each of my supported languages?

我们使用.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”)。

或者,这是一个指向“ 单元测试可扩展性示例 ”的指针,我没有使用它,但可能会对您有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM