我有一个测试套件可以在许多不同的场景中运行功能。'在每个场景中,关于该功能的某些事实必须始终为真,此外还有一些额外的场景特定事项需要检查。
我已经在我的测试类中使用继承来构建它,如下所示:
abstract class BaseTestScenario
- Common [Test]s for all scenarios
class Scenario1 : BaseTestScenario
- [Test]s specific to scenario 1
class Scenario2 : BaseTestScenario
- [Test]s specific to scenario 2
... etc ...
这很好用,但现在我有一些测试失败要处理。理想情况下,我可以使用[Ignore]
标记特定的失败,同时我会解析它们,以便每个人都可以运行剩余的测试而不必担心已知的失败。
有没有办法在特定情况下使用[Test]
标记我的常用[Ignore]
之一,而不会影响其他情景?
答案 0 :(得分:3)
您可以使用Assume.That
。
[Test]
public override void SomeTest()
{
// Run some logic to determine if the test should be skipped.
bool skipThisTest = true;
Assume.That(skipThisTest, "This test doesn't apply here.");
}
结果是测试不会运行(它将在Visual Studio测试资源管理器中显示为Inconclusive(蓝色))。
请注意,如果您在类构造函数中调用Assume.That
,这也会有效。