specflow - 如何使用编程忽略规范流测试
问题描述
我想根据某些条件执行规范流场景,如果以编程方式不满足条件,则跳过测试。
我创建了一项针对不同国家/地区执行的测试,但我只想为一个国家/地区执行测试,而不是全部。
我试过scenariocontext.current.pending(); 在这种情况下,步骤将被跳过,但在 Jenkins 中,测试结果显示为失败。
解决方案
从 SpecFlow 3.1 开始,您可以使用 UnitTestRuntimeProvider 来完成。
[Binding]
public sealed class StepDefinitions
{
private readonly IUnitTestRuntimeProvider _unitTestRuntimeProvider;
public CalculatorStepDefinitions(IUnitTestRuntimeProvider unitTestRuntimeProvider)
{
_unitTestRuntimeProvider = unitTestRuntimeProvider;
}
[When("your binding")]
public void YourBindingMethod()
{
_unitTestRuntimeProvider.TestIgnore("This scenario is always skipped");
}
}
忽略就像跳过场景。请注意,因为它对于不同的单元测试运行器(xUnit、NUnit、MSTest、SpecFlow+ Runner)的行为略有不同。
此外,这仅适用于步骤定义。不可能在钩子中使用它。
推荐阅读
- client - emqx: 找不到网址
- ruby-on-rails - Rails ActiveRecord 将数据从旧数据库复制到新数据库
- php - 每个页面的Wordpress不同的标题图像
- javascript - 更改 webpack 为导入的图像生成的图像域
- c# - 空字符串 '' 不是有效的本地名称
- python - float() 参数必须是字符串或数字,而不是 'NoneType'
- javascript - 将 RTL 语言音译为 LTR 语言的通用(粗略)算法
- c - 为什么这个循环不连续打印相同的值?
- rcpp - 为什么'&'运算符在 RcppArmadillo 中不起作用
- java - Java将值添加到arraylist到下一个空索引