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类。
在表示层下对其它层进行TDD为了构造代码,开发者需要根据“测试先行”构造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() ?
at Castle.ActiveRecord.ActiveRecordBase.EnsureInitialized(Type type)
at Castle.ActiveRecord.ActiveRecordBase.Save(Object instance)
at Castle.ActiveRecord.ActiveRecordBase.Save()
at MRProjectTest.Database.UsersDataAccessTests.TestSaveNewUser()
in UserDataAccessTest.cs:line 23
错误表明User类没有在ActiveRecord中初始化,因此对测试调整如下:
为ActiveRecord与构造器加上适当的属性,并且重新运行测试。现在相应的数据库表还没有,但这可以在测试中添加如下代码迅速进行补救:
ActiveRecordStarter.CreateSchema();//创建数据库schema运行完测试后,数据库表就生成了,但仍有一个问题:
System.NotImplementedException: todo
at UserManagement.Model.User.Find(Int64 id) in User.cs:line 72
at MRProjectTest.Database.UsersDataAccessTests.TestSaveNewUser() in
UserDataAccessTest.cs:line 41
完成对User类Find()方法的实现:
文章来源于领测软件测试网 https://www.ltesting.net/