我正致力于在Visual Studio中自动执行某些测试。但是,不同的测试方法依赖于彼此,因此总是需要按顺序执行。除非我使用datadriven testmethods,否则这不是一个大问题。
这是我想要实现的目标:
[DataTestMethod]
[Datarow("Row1")]
[Datarow("Row2")]
public void DoThisFirst(){
//test execution
}
[DataTestMethod]
[Datarow("Row1")]
[Datarow("Row2")]
public void DoThisSecond(){
//test execution
}
我希望测试按以下顺序运行:
相反,它只是在第一个方法之后运行所有迭代,然后是第二个方法的所有迭代。
我已经注意到这些方法没有出现在有序测试中,因此我使用的是播放列表文件。但是,除了执行方法的顺序之外,似乎没有其他方法可以指定。
有什么想法吗?
答案 0 :(得分:1)
实现目标的一种方法如下。
有一个数据驱动的测试方法调用另外两个。向数据文件添加新列以指定要运行的测试。复制数据文件中的每一行,并将两个测试规范添加到每一行。概括地说,代码是:
[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()
就不会叫做。但是,鉴于必须按顺序运行两个测试,如果DoThisSecond()
失败,则运行DoThisFirst()
可能不合理。