【问题标题】:How do you abort running the test cases if the ClassInitialize or TestInitalize fails?如果 ClassInitialize 或 TestInitalize 失败,您如何中止运行测试用例?
【发布时间】:2019-06-18 07:41:20
【问题描述】:

我在 Visual Studio 中使用 Microsoft 单元测试,如果 ClassInitialize(前置条件)失败,我不想运行测试用例。 如果 ClassInitialize 失败,有没有办法停止或跳过运行测试用例? 如果 TestInitialize 失败但针对单个测试用例,则同样的问题。

C#中的测试代码示例:

    [ClassInitialize()]
    public static void MyClassInitialize(TestContext testContext)
    {
        SetupTestSystem();
        if (IsTestSystemOK == false)
        {
            SetFail(); //Don't run test cases. Only highlight that ClassInitialize failed.
        }
    }

    [TestInitialize()]
    public void MyTestInitialize()
    {
        SetupForTesting();
        if (IsTestSystemOK() == false)
        {
            SetFail(); //Don't run test case, only highlight that TestInitialize failed. 
        }
    }

    [TestMethod]
    public void TestMethod1()
    {
        //If ClassInitialize or TestInitialize fails, don't run me.
    }

【问题讨论】:

  • 你能举个例子吗?
  • 您可以使用Assert.Fail() 使测试失败。跳过 - 我不知道。我不建议这样做。
  • 这应该会自动失败。当它失败时你是什么意思?它会抛出异常吗?我们需要一些code-sn-p。
  • 添加了代码示例。

标签: c# .net unit-testing


【解决方案1】:

您可以用throw new InvalidOperationException("Test Initialisation failed") 替换您的SetFail() 方法调用。这将使所有测试在运行之前失败

【讨论】:

  • 可以,但不会生成测试报告,对吧?
  • 这将报告测试失败 - 因此任何报告都会将它们视为单独的测试失败(它们都因相同的原因而失败)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-17
  • 1970-01-01
  • 2016-01-24
  • 2020-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多