【问题标题】:How to explicitly exit Data driven test method in MSTest如何在 MSTest 中显式退出数据驱动测试方法
【发布时间】:2018-02-08 07:56:04
【问题描述】:

我在 MS 测试框架中使用数据驱动测试功能。 [DataSource] 属性指定表。 C# 方法被标记为 [TestMethod]。它有效,但有时我需要停止执行。例如,表有 100 行。如何显式(过早地)在某些情况下退出测试方法(停止其余的 DDT 调用),比如在调用此方法的第 50 行期间?

 [DataSource("System.Data.SQLite", @"Data Source=D:\Test.db;", "TestTableName", 
     DataAccessMethod.Sequential)]
     [TestMethod]
    public void DataTest()
    {
        string userId = Convert.ToString(TestContext.DataRow["userid"]);
        string telephone = Convert.ToString(TestContext.DataRow["telephone"]);
        string email = Convert.ToString(TestContext.DataRow["email"]);

        // .....

        functionThatPerformsAssert(userId, telephone, email);
        // .....

    }

【问题讨论】:

  • 你能显示测试方法代码吗?
  • 抱歉 - 无法添加生产代码。添加了一些示例。但不太可能的代码会添加信息。
  • 那么,你想退出(如中止)测试的执行吗?您(和 MS 测试)希望测试结果是“通过还是失败”?如果您只想让它退出并失败,请抛出异常!
  • 断言测试失败后应该被标记为失败,然后应该跳过 50 条记录。我没有提到我需要退出/终止监督测试运行的进程。因此,在跳过测试后,预计正常流程 - 如果有任何测试方法排队执行,它们应该被执行。

标签: mstest data-driven-tests


【解决方案1】:

我通过 functionThatPerformsAssert() 解决了这个调用 Assert.Inconclusive,其中 _skipTest 确定是否跳过数据驱动测试中的当前行并开始下一行:

if (_skipTest)
            Assert.Inconclusive("Test Skipped");

【讨论】:

  • 但是当我在第一次迭代后尝试这个时,只有我的测试用例停止......我在测试初始化​​中使用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多