2011-03-21 42 views
3

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

我该怎么做?

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

有没有什么策略可以做到这一点?

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

+0

为什么不“只是做”? – 2011-03-22 00:46:28

回答

1

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

  1. 在测试项目中,仅使用您希望测试的表创建数据库中的EF模型。
  2. 从测试项目中添加对WCF服务的服务引用。
  3. 在测试项目中创建一个测试。在此测试中,使用EF上下文创建您的初始测试数据。
  4. 从测试中调用您的服务。
  5. 检查数据库中相应的数据,调用你的断言。
  6. 清理数据库。

您还应该考虑使用轻量级的基于文件的/内存数据库(如SQLite)来完成此任务。实现此目的的一个简单方法是使用EF从数据库生成模型,然后使用更新数据库模型工具生成SQL,以便在SQLite实例中创建适当的表和约束。这意味着无需修改主要/开发数据库中的数据,并且可能更快地进行测试。

另外关于第3步和第6步,有些人会主张使用内置于MSTest的设置/清理/拆卸可供件。在我看到它们帮助减少代码重复之前,我通常不会开始使用它们,因为在我看来,它们使测试不够清晰和可读,但这是个人的事情。