Visual Studio - 运行 在 Visual Studio 中按顺序进行数据驱动测试

Visual Studio - Running datadriven test sequentially in Visual Studio

我正在 Visual Studio 中进行一些自动化测试。但是,不同的测试方法相互依赖,因此始终需要按顺序执行。这不是什么大问题,除非我使用数据驱动的测试方法。

这是我想要实现的目标:

[DataTestMethod]
[Datarow("Row1")]
[Datarow("Row2")]
public void DoThisFirst(){
//test execution
}

[DataTestMethod]
[Datarow("Row1")]
[Datarow("Row2")]
public void DoThisSecond(){
//test execution
}

我希望测试 运行 按以下顺序进行:

相反,它只是 运行 第一种方法的所有迭代,然后是第二种方法的所有迭代。

我已经注意到这些方法没有出现在有序测试中,所以我改用播放列表文件。但是除了方法的执行顺序之外,似乎没有其他方法可以指定任何内容。

有什么想法吗?

一种实现您想要的方法如下。

有一个调用其他两个的数据驱动测试方法。向数据文件添加一个新列以指定对 运行 进行的测试。复制数据文件中的每一行并将两个测试规范添加到每一行。大纲代码将是:

[TestMethod]
public void TheTest()
{
    switch ( DataSource["TestToRun"] )
    {
        case "DoThisFirst" : DoThisFirst(); break;
        case "DoThisSecond" : DoThisSecond(); break;
        default: Assert.Fail("Unknown test."); break;
    }
}

CSV 格式的测试数据可能是:

TestToRun,UserName,Password,Etc1,Etc2
DoThisFirst,Row1User,Row1Passowrd,Row1Etc1,Row1Etc1
DoThisSecond,Row1User,Row1Passowrd,Row1Etc1,Row1Etc1
DoThisFirst,Row2User,Row2Passowrd,Row2Etc1,Row2Etc1
DoThisSecond,Row2User,Row2Passowrd,Row2Etc1,Row2Etc1

复制数据行很烦人,但是如果 TheTest 被修改为只调用 DoThisFirst() 然后调用 DoThisSecond() 那么如果 DoThisFirst() 失败那么 DoThisSecond()不会被调用。但是,鉴于这两个测试必须按此顺序 运行 如果 DoThisFirst() 失败,则 运行 DoThisSecond() 可能不明智。