0

如何在构建服务器上使用 Nunit 2.6.1 运行 specflow 测试?

另外,您如何维护和组织这些测试以在构建服务器上成功运行多个自动化程序员编写单独的测试?

4

1 回答 1

1

我现在将尝试回答您问题的第二部分:

“你如何维护和组织这些测试以在构建服务器上成功运行多个自动化程序员编写单独的测试?”

这类测试很有可能变成无法维护的烂摊子,原因如下:

  • 步骤用于创建上下文(用于场景测试)
  • 可以以任何顺序从任何场景调用步骤

由于这两个简单的事实,很容易将此模型与过程/结构化编程进行比较。场景上下文和一些全局变量没有什么区别,步骤是一些可以随时随地调用的方法。

我的团队为避免步骤文件中的巨大混乱所做的就是让它们尽可能地愚蠢。一个步骤所做的一切都是解析和调用将完成真正有意义的工作并保存当前测试的上下文的服务。我们将这些服务称为“xxxxDriver”(其中 xxxx 是我们正在处理的域对象)。

一个愚蠢的例子:

[Given("a customer named (.*)")]
public void GivenACustomer(string customerName)
{
  _customerDriver.CreateCustomer(customerName);
}


[Given("an empty schedule for the customer (.*)")]
public void GivenEmptySchedule(string customerName)
{
  var customer = _customerDriver.GetCustomer(customerName);
  _scheduleDriver.CreateForCustomer(customer);
}

'xxxxxDriver' 将包含所有存储库、网络网关、存根、模拟或与相关域对象相关的任何内容。另一个重要的细节是,如果您在步骤文件中注入这些驱动程序,specflow 将为每个场景创建一个实例,并在所有步骤文件中使用它。

这是我们发现的最好的方法,可以在维护和扩展步骤的方式上保持一定的一致性,而无需与一个大团队接触相同的代码库。另一个巨大的优势是它可以帮助我们找到类似的步骤来浏览驱动程序类中方法的用法。

specflow 代码库本身有一个明显的例子。(查看驱动程序文件夹) https://github.com/techtalk/SpecFlow/tree/master/Tests/TechTalk.SpecFlow.Specs

于 2012-09-21T05:51:55.760 回答