我使用SpecFlow是为了开发我的应用程序。我想迭代测试,而每次迭代都重复先前分配的参数。
由于这个步骤应该执行大约120次,所以我不想用不同的参数重写相同的测试。
是否可能只迭代场景部分?
真正的情况是:
我有应用程序功能,它打开文件并关闭它。
我想打开和关闭文件,直到应用程序失败。
我做的最后一次测试套件(使用纯C#代码)在被测试的应用程序中的内存泄漏在第10次迭代中被发现会导致失败,但是在调试了被测试的应用程序之后,它在50+迭代中失败(同样是由于内存泄漏)。
我想使用规范流来测试这个场景。
出于日志记录的原因,我想将每个迭代分割到不同的场景中。因此,与其编写包含许多子场景的特性文件,是否有一种方法可以告诉SpecFlow以升序重复序列进行迭代?
设想情况:
Scenario Outline: Open and close fileTestScenario1
Given Ready for input
When Open file <file_name>
Then File content is visible
Examples:
| file_name |
| param1 |
| param2 |
| param3 | 因此,我希望SpecFlow生成以下测试:
我知道这个场景是原子测试单元,但是如果我想执行这个任务--它是如何完成的呢?
发布于 2013-10-01 22:52:41
如果你简单地把你的测试表述为
Scenario Outline: Open and close fileTestScenario1
Given Ready for input
When Open file <file_name>
Then File content is visible
Examples:
| file_name |
| param1 |
| param1,param2 |
| param1,param2,param3 | 有约束力
[When("Open file (\w+)"]
public void WhenOpenFiles(string names)
{
foreach(var name in string.Split(',', names)
{
OpenFile(name);
}
}然而,这种方法(称为耗尽测试)并不是最好的方法来接近您的测试。在这种情况下,您真正做的就是运行大量的测试,希望能碰到一个问题。至少减少测试,这样,与其运行1个文件,然后是2个文件,然后是3个文件等等,相反,直接跳转到50个文件,因为这也处理更简单的情况。您还应该使用这种方法来简单地诊断真正的问题是什么,然后编写一个有针对性的测试,将您直接带到这个问题上。
例如,我今天遇到了一个失败的现有测试,它失败仅仅是因为它是星期一,也就是说,它有一些日期逻辑,只有在周一发生的一些TimeSpan重叠时才会失败。不过,我写了一个详尽的测试,证明了这一点,
Foreach(var day in new[] { DayOfWeek.Monday, DayOfWeek.Tuesday, ....}
Foreach(var hour in Enumerable.Range(0, 24)
Console.Writeline(test(day, hour));然后我删除了详尽的方法测试,因为我只能在星期一上午10点用一个测试来代替它。
希望这能有所帮助。
https://stackoverflow.com/questions/19090039
复制相似问题