在 C# 中,是否有任何神奇的方法可以从 ~000 个测试用例函数中检查 +early-return 而无需将代码粘贴到各处?

In C#, is there any magic way to check+early-return from ~thousand test case functions without pasting that code everywhere?

我们有大量测试用例功能的大型测试套件。由于 运行 宁许多 platforms/configurations,我们现在需要添加逻辑来跳过不适用的测试。 "direct" 这样做的方法是将其添加到每个测试方法的顶部:

if (!CheckApplicable(/* Input some enum value of test type/platform, etc */))
{
    SkipTest();
    return;
}

我真的不想把它贴到各处。如果可能的话,我更喜欢数据驱动的外观,例如属性。但是属性可以在函数开始时以某种方式告诉它 运行 代码吗?任何其他 tricks/techniques,可能涉及反射,值得研究,这不会比它们的价值更麻烦吗?如果没有,是否有 至少 一些干净的方法可以将这种类型的逻辑折叠成一行,同时仍然导致早期 return?

请注意,我们需要使用 return 退出,而不是通过抛出。此外,我们无法切换测试框架(我们正在使用 TAEF)。

编辑:另请注意,CheckApplicable 的结果目前未知,直到在 运行 某个时间点进行检查。它不是静态可知的,并且由于大型基础设施的特殊性,它不能依赖于命令行。我们可以 运行 它曾经超级早,然后以某种方式重新配置测试通过,或者只是 运行 它在每个测试用例之前。

我鼓励您看看“/select”是否适合您:

https://msdn.microsoft.com/en-us/library/windows/hardware/hh439686%28v=vs.85%29.aspx

具体来说:

  1. 根据您的标准returntrue/false编写一个模块return

  2. 用“/select:”编写脚本,使用动态结果