vb.net - 我应该如何对简单的 CRUD 类进行单元测试?

标签 vb.net visual-studio unit-testing

我现在正在尝试在 VS2008 中使用单元测试做非常非常简单的事情,以开始并对此有所了解。我想我已经对小型非数据库内容进行了测试,但现在我想开始测试我真正的解决方案 - 几乎总是 CRUD 繁重。
因此,让我们假设我在数据访问层中有一个类,它为产品执行标准的 CRUD 操作。我想对产品上的每个方法进行测试。
以下是我在对该主题没有任何实际知识的情况下所能想到的。这是这样做的方式,还是......我应该如何处理?很酷(但简单,请)引用也非常受欢迎。
创建

  • 提供一些相关参数(产品名称等)
  • 检查是否返回了身份。
  • 删除产品(清理)。


  • 创建新产品
  • 调用选择方法
  • 确保产品名称与我在创建时提供的名称一致
  • 删除产品

  • 更新
  • 创建新产品
  • 更新其上的一些字段
  • 选择产品
  • 验证某些字段是否匹配
  • 删除产品

  • 删除
  • 创建一个新产品,保留 ProductID
  • 删除产品(清理过道 4!)
  • 检查这个Productid的产品是否还在表中?

  • 编辑:
    ...或者我应该简单地创建一个测试来测试所有这些东西?

    最佳答案

    我一直在这条路上,这里是你将遇到的所有问题:

    1) 这对于一个记录看起来不错,但是当您需要 4 个其他记录来创建该记录时会发生什么?您最终创建了 4 条记录来测试插入您的一条记录。这会导致以下所有问题。

    2) 每个测试创建和删除 4-5 条记录很慢,它会慢慢加起来,运行测试需要 45 分钟(相信我,我在那里)。缓慢的测试意味着你永远不会运行它们,这意味着它们大部分时间都会被破坏并且毫无用处。

    3)您的删除将因某些丢失的外键关系或依赖项而失败,然后垃圾数据将留在您的数据库中。这些垃圾数据将导致其他测试失败。

    有鉴于此,我恳请您考虑两件事。第一种是尝试使用 ORM,而不是自己编写所有这些逻辑。然后您只需要测试您的映射文件(甚至更少,取决于您使用的 ORM)或查看模拟,以便您可以将数据访问代码中的逻辑与直接访问数据库隔离开来。

    关于vb.net - 我应该如何对简单的 CRUD 类进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/761462/

    相关文章:

    mysql - 使用 VB.net 更改 MySQL 中表的列名

    vb.net - 调用类与结构时抛出错误

    c# - 检查给定路径的文件或文件夹是否存在

    unit-testing - 为什么单元测试应该只测试一件事?

    scala - Play 框架 - 在不启动应用程序的情况下测试数据访问层

    .net - 如何检查listView是否为空

    asp.net - ASP 密码恢复不起作用

    c++ - 在 Visual Studio 2017 中制作一个向后兼容的项目?

    c# - .NET Core,未能生成 dotnet --info

    python - 如何模拟嵌套函数?