gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 00:25:55 25 4
gpt4 key购买 nike

我们使用 .resx 文件将我们的应用程序国际化为多种语言。我们的自动化单元测试在它们自己的程序集中,我们从 CI (Jenkins) 中的命令行在该项目上运行 mstest,如下所示:

mstest.exe /testcontainer:unittests.dll /category:"!TemporaryExclude" /resultsfile:UnitTests.trx



我们发现如果在设置为我们的非英语支持文化之一的机器上运行特定单元测试将失败的情况。我们希望我们的 CI 对每种文化运行单元测试,包括当前的 en-us 文化。这肯定是其他人遇到的问题,但我没有发现任何问题。

有没有办法针对特定文化运行 mstest? 我在 the command-line docs for mstest.exe 中什么也没看到

我知道我可以在我的测试中指定 Thread.CurrentThread.CurrentCulture 和 Thread.CurrentThread.CurrentUICulture,但我不希望我们团队的开发人员必须复制粘贴他们的测试的副本,每个文化一个。这对他们来说将是额外的工作,并且仅因文化而异的副本将难以维护并且容易出错。

我想知道从 TestMethodAttribute 派生一个类并让它循环遍历我所有的语言资源 DLL,为每个运行一次测试代码,但 Visual Studio 告诉我:

Error 2 'ClassToExtendTestMethodAttribute': cannot derive from sealed type 'Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute'



TestClassAttribute 也是如此。

最佳答案

一种想法可能是从 TestInitialize 中的配置文件中读取文化。方法以便与 Thread.CurrentThread.CurrentCulture 一起使用,并将此方法放入基本单元测试类(所有其他测试类都应该从中派生)。
如果这样做成功,您可以调用 mstest从循环中的批处理文件并在每一步之后更改配置文件(例如从“en-us”到“fr-FR”)。

或者,这里有一个指向“Unit Test Extensibility Sample ”的指针,我没有使用过,但可能会对您有所帮助。

关于.net - 使用 mstest,我可以针对每种支持的语言运行我的单元测试套件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11160062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com