我有一个主要是CRUD的Web应用程序,但也有一些业务逻辑。 我正在使用ORM(实体框架)与域,服务和UI(ASP.NET MVC)层。
我希望为此应用程序添加自动化测试。
是否有一些开源应用程序可以演示最佳实践:
在一个申请中。
有很多非常简单的代码示例,但是在现实世界中使用的“非简单”应用程序呢。
答案 0 :(得分:1)
我将描述我在这里所做的事情,但不要以为这是正确的做法 - 只是描述我的经历:
我使用NUnit为我的数据访问层编写所有单元测试,使用SQLite数据库“模拟”数据库。这样所有数据库调用都是真实的,但db在内存中,因此在运行测试时仍然可以获得良好的性能。每种数据访问方法都应在此进行彻底测试。
我的业务功能使用NUnit再次测试,但使用Moq模拟所有数据访问操作。如果您在业务层中缓存任何内容(就像我一样),您可以注入内存缓存类而不是真实类,以确保将内容正确放入缓存中。
虽然许多人喜欢为他们的控制器做这件事,但我更喜欢使用像Selenium这样的前端测试工具来“记录”我的单元测试并随后将它们转换为代码。 Selenium是测试实际功能的一个很好的工具,而不仅仅是与其他功能隔离的特定情况。您可以使用相关的Firefox插件记录系统中的所有主要功能并计划断言(例如,单击按钮A将我带到页面B,我可以看到我的“谢谢”消息)。 Selenium也是运行自动前端单元测试的绝佳工具。您可以将测试转换为C#代码,并在每晚构建期间通过您选择的持续集成工具运行它们(我使用TeamCity并且效果很好),或者根据应用程序的大小,有几个Web应用程序需要您的selenium脚本作为输入并以半自动方式运行它们。
只是为了澄清:将上述所有测试(数据访问,业务层,前端测试)作为NUnit测试并设置一个简单的CI工具以便每晚运行它们是很好的。通过这种方式,您可以知道,当您在办公室或每天早上提交一些代码时,某些内容会中断。
对不起,这不是你要找的例子,但我认为它可以帮到你。