【问题标题】:Running NUnit 3 tests under multiple cultures在多种文化下运行 NUnit 3 测试
【发布时间】:2020-10-21 15:39:45
【问题描述】:

很像this question 我需要在不同的文化中运行我所有的 NUnit 测试。我希望有一个属性可以让我指定文化,并且测试将依次在每种文化中运行。

似乎有一个详细记录的属性here 允许您设置运行 NUnit 测试的文化,但是它不允许设置多种文化。

在链接问题的答案和找到的与 NUnit 2 相关的其他几个资源(例如 herehere)中,此功能是 NUnit 3 的计划改进。

由于我找不到执行此操作的证据,请任何人回答这个问题...

有没有办法采用现有的 NUnit 3 测试用例套件,并以整齐的格式在多种文化中自动运行它们?

我想我可以编写一个在 IDE 之外运行它们的应用程序脚本,但这会增加额外的开销。

我也不喜欢复制和粘贴测试的想法,每次只需更改“SetCulture”属性(同样徒劳,我不想在每次运行之前手动更改现有夹具上的这个)

【问题讨论】:

  • 在“涵盖 NUnit 3.0 及更高版本”的文档中是 present
  • 是的,我看到了该属性,但问题与“只能指定一种文化。在多种文化下运行测试是计划的未来增强”这一说法有关。这是我看到的与 NUnit 2 相关的声明,所以我问它是否已经被采取行动,或者是否有一个体面的解决方法
  • 正如文档所说:“此时,您可以通过将测试代码分解为由每个单独的测试方法调用的私有方法来获得相同的结果。”

标签: c# cultureinfo nunit-3.0


【解决方案1】:

据我所知,目前 NUnit 没有内置任何东西可以做到这一点,尽管这个想法已经被提出过几次。 (例如,为控制台运行器引入 --set-culture 标志。)

作为一种解决方法,可以在程序集级别应用 SetCulture 属性 - 因此您可能在编译符号下有两个不同的程序集级别 SetCulture 属性,然后构建您的测试程序集两次 - 每种文化一次。例如

#if US_CULTURE
[assembly: SetCulture("en-US")]
#elif UK_CULTURE
[assembly: SetCulture("en-GB")]
#endif

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 1970-01-01
    相关资源
    最近更新 更多