谁能告诉我如何在数据驱动的编码 ui 测试的第一次失败时停止迭代?我有数百次迭代,我想知道在完成之前失败了。意思是,我不想等待几个小时才能知道第一次迭代失败了。这可能吗?
谢谢
谁能告诉我如何在数据驱动的编码 ui 测试的第一次失败时停止迭代?我有数百次迭代,我想知道在完成之前失败了。意思是,我不想等待几个小时才能知道第一次迭代失败了。这可能吗?
谢谢
我有类似的问题,经过一些研究,我发现有两种可能的解决方案: 1.复杂的一个- 通过实现ITestMethodInvoker接口,使用您自己的自定义数据适配器创建您自己的测试调度程序。在那里,您可以按照您希望的方式运行测试迭代。您还需要覆盖TestContex类,以便为您的测试方法提供来自数据适配器的 DataRows。2.最简单的一个- 这实际上不会阻止 Visual Studio 遍历数据源中的所有 DataRows,而是不会执行实际的测试方法,Visual Studio 会将其标记为已跳过并继续。这是示例代码:
[CodedUITest]
public class MyTestClass
{
private TestContext testContext;
private static int countFailedIterations = 0;
private static string currentMethod = "";
public MyTestClass()
{
if (!currentMethod.Equals(testContext.FullyQualifiedTestClassName))
{
// Reset Iteration Count
countFailedIterations = 0;
currentMethod = testContext.FullyQualifiedTestClassName;
}
}
[TestInitialize]
public void MyTestInit()
{
if (countFailedIterations > 0)
Assert.Inconclusive("Stop it, please");
}
[TestCleanup]
public void MytestCleanup()
{
if (testContext.CurrentTestOutcome != UnitTestOutcome.Passed)
countFailedIterations++;
}
[TestMethod]
[DataSource("MyDataSource")]
public void MyTestMethod()
{
//Blah Blah Blah
}
public TestContext TestContext
{
get { return testContext; }
set { testContext = value; }
}
}
仅当您有多个数据驱动的测试方法时才需要构造函数内的代码,因此您想重置失败的迭代计数器。但你是对的 - 当构造函数运行时 TestContext 仍未初始化。您实际上可以将代码从构造函数移动到 MyTestInit() 方法 - 它应该可以工作。