集成测试详细

发布于 2024-10-24 21:29:21 字数 186 浏览 4 评论 0原文

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

我该怎么做?

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

您有什么推荐的策略吗?

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

I have a WCF service that accesses the database and adds data to it.
now, I want to do some integration and/or system tests (automated).

How do I do it ?

I have to access the database, load initial data, call the service and then verify whether the data expected was actually loaded in the table.

is there any strategy for doing that you would recommend ?

I'm using WCF, Entity Framework, SQL Server, MSTests.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

谁与争疯 2024-10-31 21:29:21

如果您不介意您的测试项目依赖于实体框架,那么我将如何解决这个问题。

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

您还应该考虑使用轻量级的基于文件/内存数据库(例如 SQLite)来完成此任务。实现此目的的一种简单方法是使用 EF 从数据库生成模型,然后使用“从模型更新数据库”工具生成 SQL,该 SQL 将在 SQLite 实例中创建适当的表和约束。这意味着不会有修改主/开发数据库中数据的风险,并且可能会加快测试速度。

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

If you don't mind your test project taking a dependency on Entity Framework then here's how I would approach this.

  1. In the test project, create an EF model from the database, using only the table(s) you expect to be testing.
  2. Add a service reference to the WCF service from the test project.
  3. Create a test in the test project. In this test, use the EF context to create your initial test data.
  4. Call your service from the test.
  5. Check the database for the appropriate data, call your Assert(s).
  6. Clean up the database.

You should also consider using a lightweight file-based/in-memory database such as SQLite for this task. One simple way of achieving this would be to use EF to generate a model from your DB, then use the Update Database From Model tool to generate the SQL that will create the appropriate tables and constraints in your SQLite instance. This means no risk of munting the data in your main/dev DB and potentially faster tests.

Also regarding steps 3 and 6, some people would advocate using the setup/clean-up/tear-down affordance built in to MSTest. I generally don't start using these until I can see them helping with reducing code duplication, because in my opinion they make tests less clear and readable, but that's a personal thing.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文