我想知道人们目前是如何为WatiN/Wartir测试重置数据/清理测试残留物的?
例如,假设有一个测试用于将用户添加到系统中,并且用户名必须是唯一的。显然,在没有任何用户的情况下,第一次运行应该可以正常工作,但是如果没有人工干预,第二次运行将会失败。
发布于 2009-05-05 22:56:41
有几个策略你可以做到这一点,我假设你正在使用WatiN,与Nunit或VS单元测试来运行你的测试。
使用事务回滚(Use transactions )单元测试时使用的一种方法是将整个测试“包装”在事务中,并在测试完成时回滚事务。在.net中,您可以使用System.Transactions来实现这一点。
构建一个“存根页面”在您的应用程序中构建一个使用现有业务逻辑删除数据的页面。这个页面需要得到保护,最好不要部署到生产环境中。这是我推荐的方法。
调用web服务开发web服务,或者直接从应用程序的应用层调用web服务来执行删除。您可能还需要开发这一点。
Clean 在您的测试代码中构建一些类来访问和清理数据。
对于其中的任何一个,您将需要在运行测试之前和之后进行清理,即在测试设置和测试清理方法中。这样做两次的原因是,你应该假设你的测试失败了,并且没有正确地清理干净。
使用Linq to Sql AFAIK如果你正在使用Linq to sql,它在内存中工作,并自动将整个更新包装在一个事务中。如果您只是简单地不调用SubmitChanges();方法,那么您应该没有问题,但是我还没有亲自测试过。
发布于 2009-04-30 08:35:32
我已经要求开发人员制作一个脚本,将重置数据库。在一系列测试之后,我只需调用该脚本并从干净的数据库开始。
发布于 2009-04-30 14:40:19
Mike -你的问题并不是Watir/WatiN独有的。它适用于任何UI测试,因此可以为Selenium、Windmill甚至无头集成测试(HtmlUnit、API测试等)搜索类似的解决方案。我已经在StackOverflow上亲自回答过这个问题好几次了。
https://stackoverflow.com/questions/804892
复制相似问题