首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SpecFlow迭代场景步骤

使用SpecFlow迭代场景步骤
EN

Stack Overflow用户
提问于 2013-09-30 08:49:18
回答 1查看 2.3K关注 0票数 1

我使用SpecFlow是为了开发我的应用程序。我想迭代测试,而每次迭代都重复先前分配的参数。

由于这个步骤应该执行大约120次,所以我不想用不同的参数重写相同的测试。

是否可能只迭代场景部分?

真正的情况是:

我有应用程序功能,它打开文件并关闭它。

我想打开和关闭文件,直到应用程序失败。

我做的最后一次测试套件(使用纯C#代码)在被测试的应用程序中的内存泄漏在第10次迭代中被发现会导致失败,但是在调试了被测试的应用程序之后,它在50+迭代中失败(同样是由于内存泄漏)。

我想使用规范流来测试这个场景。

出于日志记录的原因,我想将每个迭代分割到不同的场景中。因此,与其编写包含许多子场景的特性文件,是否有一种方法可以告诉SpecFlow以升序重复序列进行迭代?

设想情况:

代码语言:javascript
复制
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生成以下测试:

  1. 使用param1调用场景(使用param1和断言调用)
  2. 使用param1和param2调用场景(使用param1和param1调用,然后使用param2和断言调用)
  3. 使用param1、param2和param3调用场景(用param1调用,然后用param2调用,然后用param2调用,然后用param3和断言调用)
  4. ..。

我知道这个场景是原子测试单元,但是如果我想执行这个任务--它是如何完成的呢?

EN

回答 1

Stack Overflow用户

发布于 2013-10-01 22:52:41

如果你简单地把你的测试表述为

代码语言:javascript
复制
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   | 

有约束力

代码语言:javascript
复制
[When("Open file (\w+)"]
public void WhenOpenFiles(string names)
{
  foreach(var name in string.Split(',', names)
  {
       OpenFile(name);
  }
}

然而,这种方法(称为耗尽测试)并不是最好的方法来接近您的测试。在这种情况下,您真正做的就是运行大量的测试,希望能碰到一个问题。至少减少测试,这样,与其运行1个文件,然后是2个文件,然后是3个文件等等,相反,直接跳转到50个文件,因为这也处理更简单的情况。您还应该使用这种方法来简单地诊断真正的问题是什么,然后编写一个有针对性的测试,将您直接带到这个问题上。

例如,我今天遇到了一个失败的现有测试,它失败仅仅是因为它是星期一,也就是说,它有一些日期逻辑,只有在周一发生的一些TimeSpan重叠时才会失败。不过,我写了一个详尽的测试,证明了这一点,

代码语言:javascript
复制
Foreach(var day in new[] { DayOfWeek.Monday, DayOfWeek.Tuesday, ....}
   Foreach(var hour in Enumerable.Range(0, 24)
     Console.Writeline(test(day, hour));

然后我删除了详尽的方法测试,因为我只能在星期一上午10点用一个测试来代替它。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19090039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档