2012-01-26 43 views
1

我有一个Web应用程序,主要是CRUD,但也有一些业务逻辑。 我使用ORM(实体框架)与域,服务和UI(ASP.NET MVC)图层。CRUD Web应用程序中的自动测试示例?

我希望增加自动化测试该应用程序。

是否有这表明做最佳做法的一些开源应用:

  • 单元测试
  • 集成测试
  • UI测试

一个应用程序中。

有很多非常简单的情况下的代码示例,但什么是在现实世界中使用的“非简单”的应用程序。

回答

1

我会形容我在做在这里,但不认为这是做的正确的方式 - 只是描述我的经验:

我使用NUnit写使用SQLite,让我的数据访问层,我所有的单元测试db来“模拟”数据库。这样所有的数据库调用都是真实的,但数据库在内存中,所以在运行测试时仍然可以获得良好的性能。每个数据访问方法都应该在这里彻底测试。

我的商务功能再次测试使用NUnit,但使用起订量来模拟所有的数据访问操作。如果您在业务层中缓存任何内容(就像我一样),则可以注入内存缓存类而不是真正的内存缓存类,以确保将内容正确放入缓存中。

虽然很多人喜欢这样做,他们的控制器我更喜欢使用前端测试工具,如硒,以“记录”我的单元测试,并将它们转换成代码之后。硒在测试真实世界功能方面是一个很好的工具,而不仅仅是某个特定的情况与其他情况分开。您可以使用相关的Firefox插件来记录系统中的所有主要功能并计划您的断言(例如,单击按钮A带我到页面B,在那里我可以看到我的“谢谢”消息)。 Selenium也是运行自动化前端单元测试的好工具。您可以将您的测试转换为C#代码,并在夜间编译期间通过您选择的持续集成工具运行它们(我使用TeamCity并且效果很好),或者根据您的应用程序的大小,可以使用几个Web应用程序您的硒脚本作为输入并以半自动化的方式运行它们。

只是为了澄清:这是不错的上述所有这些测试在NUnit测试和安装一个简单的CI工具,每天晚上运行它们(数据访问,业务层,前端测试)。通过这种方式,您可以知道当您在办公室中每天早上提交一些代码时,是否有什么事情会中断。

很抱歉,这是不是你要找的例子,但我认为它可以帮助你。