我想使用specflow进行系统测试 测试步骤应该是:
When I'm selecting "A"
Then "A" item(s) appear
When I'm selecting "B"
Then "A" and "B" item(s) appear
When I'm unselecting "A"
Then "A" item(s) appear
问题是2'nd When被specflow视为一种新方法。 你有谁知道解决方案是什么?
提前致谢!
答案 0 :(得分:1)
你的场景对我来说使用语言很奇怪。这意味着您正在做某事,而不是执行,完成和行动。我认为When I select 'A'
会更好。
无论如何,这些步骤定义应允许重复使用您的步骤:
[When(@"I'm selecting ""(.*)""")]
public void WhenIMSelecting(string p0)
{
ScenarioContext.Current.Pending();
}
[Then(@"""(.*)"" item\(s\) appear")]
public void ThenItemSAppear(string p0)
{
ScenarioContext.Current.Pending();
}
[Then(@"""(.*)"" and ""(.*)"" item\(s\) appear")]
public void ThenAndItemSAppear(string p0, string p1)
{
ScenarioContext.Current.Pending();
}
[When(@"I'm unselecting ""(.*)""")]
public void WhenIMUnselecting(string p0)
{
ScenarioContext.Current.Pending();
}
通常我更喜欢单引号来包装参数,因为它使正则表达式更容易使用,所以我会重写这样的场景:
When I select 'A'
Then 'A' item(s) are shown
When I select 'B'
Then 'A' and 'B' item(s) are shown
When I deselect 'A'
Then 'A' item(s) are shown
这将导致这些步骤定义:
[When(@"I select '(.*)'")]
public void WhenISelect(string p0)
{
ScenarioContext.Current.Pending();
}
[Then(@"'(.*)' item\(s\) are shown")]
public void ThenItemSAreShown(string p0)
{
ScenarioContext.Current.Pending();
}
[Then(@"'(.*)' and '(.*)' item\(s\) are shown")]
public void ThenAndItemSAreShown(string p0, string p1)
{
ScenarioContext.Current.Pending();
}
[When(@"I deselect '(.*)'")]
public void WhenIDeselect(string p0)
{
ScenarioContext.Current.Pending();
}
但显然你的域名在你的场景中使用你想要的任何语言: - )