集成测试详细

时间:2011-03-21 23:51:31

标签: c# .net unit-testing mstest

我有一个访问数据库并向其添加数据的WCF服务。 现在,我想进行一些集成和/或系统测试(自动化)。

我该怎么做?

我必须访问数据库,加载初始数据,调用服务,然后验证预期的数据是否实际加载到表中。

你有什么策略可以推荐吗?

我正在使用WCF,实体框架,SQL Server,MSTests。

1 个答案:

答案 0 :(得分:1)

如果您不介意您的测试项目依赖于实体框架,那么我将如何处理此问题。

  1. 在测试项目中,仅使用您希望测试的表格从数据库创建EF模型。
  2. 从测试项目向WCF服务添加服务引用。
  3. 在测试项目中创建测试。在此测试中,使用EF上下文创建初始测试数据。
  4. 从测试中调用您的服务。
  5. 检查数据库中是否有相应的数据,请调用您的Assert(s)。
  6. 清理数据库。
  7. 您还应该考虑使用基于文件的轻量级/内存数据库(如SQLite)来完成此任务。实现此目的的一种简单方法是使用EF从数据库生成模型,然后使用“从模型更新数据库”工具生成将在SQLite实例中创建相应表和约束的SQL。这意味着不存在在主/ dev数据库中放置数据的风险以及可能更快的测试。

    关于步骤3和6,有些人会主张使用MSTest内置的设置/清理/拆卸功能。我通常不会开始使用这些,直到我看到他们帮助减少代码重复,因为在我看来他们使测试不那么清晰和可读,但这是个人的事情。