我们使用.resx文件将我们的应用程序国际化为几种语言。我们的自动化单元测试在它们自己的程序集中,我们从CI (Jenkins)内部的命令行对该项目运行了最多的程序,如下所示:
mstest.exe /testcontainer:unittests.dll /category:“TemporaryExclude”/resultsfile:UnitTests.trx
我们已经发现,如果在一台机器上运行到非英语支持的区域性之一,那么特定的单元测试就会失败。我们希望让我们的CI针对每种文化运行单元测试,包括当前的en-us文化。这一定是别人遇到的问题,但我没有发现任何东西。
有没有一种方法来对抗特定的文化?,我在用于mstest.exe的命令行文档中什么都没看到
我知道我可以在我的测试中指定Thread.CurrentThread.CurrentCulture和Thread.CurrentThread.CurrentUICulture,但是我不希望我们团队中的开发人员不得不复制他们测试的副本,每个文化一个。这对他们来说是额外的工作,只有文化才会有不同的重复,这是很难维护的,而且容易出错。
我想知道如何从TestMethodAttribute派生一个类,并让它遍历我所有的语言资源all,为每个类运行一次测试代码,但是Visual告诉我:
错误2 'ClassToExtendTestMethodAttribute':不能从密封类型'Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute‘派生
TestClassAttribute也一样。
发布于 2012-06-22 16:45:08
一种想法可能是从TestInitialize方法中的一个配置文件中读取区域性,以便与Thread.CurrentThread.CurrentCulture一起使用,并将该方法放入一个基本单元测试类中(所有其他测试类都应该从中派生)。如果这样做了,您可以从循环中的批处理文件中调用mstest,并在每一步之后将配置文件(例如,从"en-us“更改为"fr-FR”)。
或者,这里有一个指向"单元测试扩展性样本“的指针,我没有使用它,但可能会帮助您。
https://stackoverflow.com/questions/11160062
复制相似问题