【发布时间】:2016-07-27 18:03:34
【问题描述】:
我正在考虑为各种级别的测试设置 SpecFlow,作为其中的一部分,我希望能够过滤运行哪些测试。
例如,假设我想做一个完整的 GUI 测试运行,我在开发环境中构建 GUI 测试的依赖项,并运行所有标记为 @gui 的规范,并通过 gui 执行步骤。同样从同一个脚本中,我只想运行标记为 @smoke 的测试,并设置部署环境所需的任何依赖项,并通过 api 执行步骤。
我知道您可以在通过 specflow 运行程序运行时过滤标签,但我还需要更改每个测试在测试运行上下文中的工作方式。我还希望在构建服务器上运行时使用单个配置/命令行参数来切换这种行为变化。
所以到目前为止,我的解决方案是为每种测试运行配置构建配置,并进行配置转换,以便在测试运行启动时将行为注入到 specflow 中。但我也不确定按标签过滤的正确方法。
我可以这样做:
[BeforeFeature]
public void CheckCanRun()
{
if(TestCannotBeRunInThisContext())
{
ScenarioContext.Current.Pending();
}
}
我认为这会起作用(它不会运行该功能),但测试仍然会出现在我的测试结果中,如果我用我的标签过滤掉大部分测试,这会很混乱。如果有一种方法可以使该功能完全停止运行?
【问题讨论】:
-
当您不想运行这些测试时,您是如何运行这些测试的?使用内置的 VS 跑步者?从命令行?在构建服务器上?
-
@SamHolder 在开发过程中使用 resharper 测试运行器和 CI 服务器(在不同的构建级别上运行不同的配置),如果可能的话,还可以在已部署的服务器上使用一些规范来检查部署一切顺利...