
这是一个好现象,因为这意味着测试在应该失败时失败了。否则这次测试就没有起到任何作用,是毫无意义的。
在TDD实施步骤的第三步中,开发者需要编写代码。这意味着当反向测试时,代码应该不会运行失败。下一步建立User控制器,然后建立视图并运行测试:

接着再建立一个空的add.vm,并且重新运行该测试:
Selenium.SeleniumException: ERROR: Element link=Add new user not found
at Selenium.HttpCommandProcessor.DoCommand(String command, String[] args)
at Selenium.DefaultSelenium.Click(String locator)
at MRProjectTest.Functionals.Selenium.ManageUsersTests.TestAddNewUser() in
ManageUsersTests.cs:line 34
因为错误报告说在网页上找不到内容,所以我们就把内容添加到add.vm中:

重新测试:

错误再次出现,因为将表单的内容提交到create.aspx之后,点击页面按钮的行为尚未实现。
然后添加如下代码以保存数据:

现在我们稍等片刻,因为无论list 行为还是数据库中都不存在User类。
为了构造代码,开发者需要根据“测试先行”构造User类。 虽然在有的情况下这没有必要,因为ActiveRecord已经很好地被测试过了,并且它也通过了功能测试。 但仍需指明应该如何处理一些更为复杂的情况。
接下来的测试不是功能测试,而是集成测试,一个利用数据库的单元测试:

测试它会不会失败。其实它甚至没有进行编译,所以首先是构造一个没有任何方法的User类,强制编译其代码:

现在,运行测试:
Castle.ActiveRecord.Framework.ActiveRecordException: An ActiveRecord class (UserManagement.Model.User) was used but the framework seems not properly initialized. Did you forget about ActiveRecordStarter.Initialize() ?

