我正在尝试使用Specflow,NUnit和WatiN进行一些BDD测试。我正在使用TestDriven.NEt来运行测试。这是我的第一次测试:
[Binding]
[TestFixture, RequiresSTA]
public class RegisterUserSteps
{
private IE _ie = new IE();
[When(@"the user visits the registration page")]
public void WhenTheUserVisitsTheRegistrationPage()
{
_ie.GoTo("http://localhost:1064/Register/");
}
[When(@"enter the following information")]
public void WhenEnterTheFollowingInformation(Table table)
{
foreach(var tableRow in table.Rows)
{
var field = _ie.TextField(Find.ByName(tableRow["Field"]));
if(!field.Exists)
{
Assert.Fail("Field does not exists!");
}
field.TypeText(tableRow["Value"]);
}
}
[When(@"click the ""Register"" button")]
public void WhenClickTheRegisterButton()
{
ScenarioContext.Current.Pending();
}
[Then(@"the user should be registered")]
public void ThenTheUserShouldBeRegistered()
{
ScenarioContext.Current.Pending();
}
}
问题是它永远不会进入
[When(@"enter the following information")]
public void WhenEnterTheFollowingInformation(Table table)
它只是启动浏览器并执行第一步。我错过了什么吗?
答案 0 :(得分:2)
不看测试,似乎你错过了一个重要的步骤(给定)。通常是这样的:
Given I go to some page
And all the set up data are available - optional
When I enter the following info
And I click "Register" button
Then I see something
基本上步骤是GWT(Given,When,Then)。它是Gherkin语言,所以如果你google它,你会看到更多的信息。如果给定步骤有多个内容,则必须使用And
,例如,When ...... And.......
,而不是When...... When........