如何对数据库依赖行为进行单元测试 C#

2024-01-06


我有一个与数据库通信的 C# 应用程序。我想测试一些依赖于数据库的功能。所以我想确保数据库在每次测试运行之前都有一个初始状态。我使用 NUnit 来测试我的应用程序。有什么方法可以恢复DB的初始状态?
感谢您的帮助!


您不对与数据库的交互进行单元测试。这种类型的测试称为集成测试。为此,您可以使用常用的测试工具(NUnit、MSTest 等),但最好是将集成测试放在单独的项目中,使用专用的测试数据库,并在事务中运行这些测试(例如,使用交易范围 http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx)你回滚。这可以确保数据不会改变并且测试的行为是可预测的,这一点非常重要。

如果可以的话,尝试以这样的方式设计应用程序,即可以轻松伪造所有外部源(例如数据库),以允许您运行(通常更快)单元测试。然而这并不容易。特别是在处理尚未设计为可测试性的现有应用程序时。在这种情况下,我发现集成测试是一个很好的开始方式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何对数据库依赖行为进行单元测试 C# 的相关文章

  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • MVC 在布局代码之前执行视图代码并破坏我的脚本顺序

    我正在尝试将所有 javascript 包含内容移至页面底部 我正在将 MVC 与 Razor 一起使用 我编写了一个辅助方法来注册脚本 它按注册顺序保留脚本 并排除重复的内容 Html RegisterScript scripts som
  • ClickOnce 应用程序错误:部署和应用程序没有匹配的安全区域

    我在 IE 中使用 FireFox 和 Chrome 的 ClickOnce 应用程序时遇到问题 它工作正常 异常的详细信息是 PLATFORM VERSION INFO Windows 6 1 7600 0 Win32NT Common
  • 复制 std::function 的成本有多高?

    While std function是可移动的 但在某些情况下不可能或不方便 复制它会受到重大处罚吗 它是否可能取决于捕获变量的大小 如果它是使用 lambda 表达式创建的 它依赖于实现吗 std function通常被实现为值语义 小缓
  • 使用 LINQ2SQL 在 ASP.NET MVC 中的各种模型存储库之间共享数据上下文

    我的应用程序中有 2 个存储库 每个存储库都有自己的数据上下文对象 最终结果是我尝试将从一个存储库检索到的对象附加到从另一个存储库检索到的对象 这会导致异常 Use 构造函数注入将 DataContext 注入每个存储库 public cl
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • Flutter 中有预填充数据库使用的示例吗?

    Flutter 中有预填充数据库使用的示例吗 我不需要 CRUD 示例 此时我只需要从数据库读取数据即可 我是 Flutter 新手 所以一步一步的教程会很好 您可以将您的应用程序与预填充的 sqlite 数据库捆绑在一起assets文件夹
  • 如何创建包含 IPv4 地址的文本框? [复制]

    这个问题在这里已经有答案了 如何制作一个这样的文本框 我想所有的用户都见过这个并且知道它的功能 您可以使用带有 Mask 的 MaskedTestBox000 000 000 000 欲了解更多信息 请参阅文档 http msdn micr
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • 为什么调用非 const 成员函数而不是 const 成员函数?

    为了我的目的 我尝试包装一些类似于 Qt 共享数据指针的东西 经过测试 我发现当应该调用 const 函数时 会选择它的非 const 版本 我正在使用 C 0x 选项进行编译 这是一个最小的代码 struct Data int x con
  • 如何检测表单的任何控件的变化?

    如何检测 C 中表单的任何控件的更改 由于我在一个表单上有许多控件 并且如果表单中的任何控件值发生更改 我需要禁用按钮 我正在寻找一些内置函数 事件处理程序 属性 并且不想为此创建自定义函数 不 我不知道任何时候都会触发任何事件any控制表
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • 为什么 std::strstream 被弃用?

    我最近发现std strstream已被弃用 取而代之的是std stringstream 我已经有一段时间没有使用它了 但它做了我当时需要做的事情 所以很惊讶听到它的弃用 我的问题是为什么做出这个决定 有什么好处std stringstr
  • 外键与独立关系 - Entity Framework 5 有改进吗?

    我读过了several http www ladislavmrnka com 2011 05 foreign key vs independent associations in ef 4 文章和问题 https stackoverflow
  • 如何使用mockito模拟构建器

    我有一个建造者 class Builder private String name private String address public Builder setName String name this name name retur
  • 如何设置 log4net 每天将我的文件记录到不同的文件夹中?

    我想将每天的所有日志保存在名为 YYYYMMdd 的文件夹中 log4net 应该根据系统日期时间处理创建新文件夹 我如何设置它 我想将一天中的所有日志保存到 n 个 1MB 的文件中 我不想重写旧文件 但想真正拥有一天中的所有日志 我该如
  • 使用 %d 打印 unsigned long long

    为什么我打印以下内容时得到 1 unsigned long long int largestIntegerInC 18446744073709551615LL printf largestIntegerInC d n largestInte
  • 按 Esc 按键关闭 Ajax Modal 弹出窗口

    我已经使用 Ajax 显示了一个面板弹出窗口 我要做的是当用户按 Esc 键时关闭该窗口 这可能吗 如果有人知道这一点或以前做过这一点 请帮助我 Thanks 通过以下链接 您可以通过按退出按钮轻松关闭窗口 http www codepro
  • 调用堆栈中的“外部代码”是什么意思?

    我在 Visual Studio 中调用一个方法 并尝试通过检查调用堆栈来调试它 其中一些行标记为 外部代码 这到底是什么意思 方法来自 dll已被处决 外部代码 意味着该dll没有可用的调试信息 你能做的就是在Call Stack窗口中单
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List

随机推荐

  • 通过 VBA 传递 Python 参数

    我写了一个python脚本 需要使用VBA调用 我编写了一个 python 脚本 可以解析 pdf 将我需要的数据存储在变量中 并写入预制的 Excel 工作表以用这些值填充单元格 我已经成功地能够调用该脚本并使用以下代码运行它 Sub R
  • Chrome 和 Android 中的 Web SQL 存储限制?

    因此 我正在编写一个 Web 应用程序 需要在离线 Web SQL 数据库中存储约 40MB 的离线数据 它需要在 Chrome 桌面 Safari 桌面和移动 和 Android 浏览器中工作 现在我知道这些浏览器支持 Web SQL 并
  • 如何在 RHEL Linux 服务器上安装 Cargo?

    我尝试在 RHEL 服务器上安装 Cargo curl https sh rustup rs sSf sh 但完成后 我得到回复 cargo bash cargo command not found 有其他安装方式吗 首先启用rhel 7
  • 如何在共享框架中为 XCTest 创建公共扩展?

    例如 我从不使用以下描述XCTestCase expectation 所以我想使用一个函数来为其提供默认值 并通过命名清楚地表明我正在初始化期望 因为您不能真正使用初始化程序XCTestExpectation 但如果扩展不在测试目标中 则无
  • 在 jboss 独立运行时事务无法继续 STATUS_MARKED_ROLLBACK

    有人遇到以下问题吗 我能够使用 jboss 工具在 eclipse 内的 jboss 中成功构建 部署和运行我的 javaee6 应用程序 但是当我们将其部署到另一台独立运行的服务器上时 我们遇到了错误 我在 eclipse 所在的同一台机
  • 片段活动未找到类异常 android

    我正在研究用于姜饼操作系统的片段活动 当我尝试在姜饼模拟器上运行应用程序时 由于以下原因 应用程序被强制关闭ClassNotFound错误 我在下面提供我的主要片段活动代码 和平的帮助将是值得赞赏的 package com example
  • 如何修复docker或重新安装它?

    我已经执行了这个命令 但现在 docker 不工作 如何正确修复 或重新安装 docker sudo rm rf var lib docker aufs 我已经尝试去做 apt get install reinstall docker 但没
  • 在旧版 .NET 平台上使用 .NET Core 包

    我正在使用 VS 中的新 类库 包 模板之一创建 NuGet 包 我想知道 有什么方法可以使用 PCL 中的包吗 not使用 NET Core 例如 我有一个包裹 Enu 具有以下project json title Enu project
  • 调用 Tumblr 帖子转发 api 时收到 401(未授权)

    我在调用 Tumblr 帖子转发 api 时收到 401 状态 其他 tumblr api 工作正常 我关注了 Stackoverflow 的一些链接 但无法使用它 当尝试发布到 tumblr 博客时不断收到 401 https stack
  • ArrayObject, getIterator();

    我试图理解什么getIterator 是的 我将解释 我所知getIterator是我们调用以包含外部迭代器的方法 问题是 getIterator 包含它有自己的方法关闭认为看起来相同的是迭代器接口 但它不能是一个接口 它可以是类 但我试图
  • 使用 Swiftmailer 发送多个附件

    我正在创建一个允许上传多个文件的表单 然后将表单字段值和附件通过电子邮件发送到特定地址 我正在使用 Swiftmailer 生成这些电子邮件 我知道如何使用 Swiftmailer 附加一个文件 但不知道如何附加多个文件 有谁知道使用 Sw
  • UIWebView 未使用 ARC 释放所有活动字节

    我目前正在 iOS 5 1 中构建一个使用 ARC 的导航控制器应用程序 我经常需要显示网页 我制作了一个 Web 查看器 它只是一个 UIWebView 两侧有一些自定义内容 当用户看完页面后 他们点击后退按钮 这将释放与自定义 Web
  • 查找多个重叠矩形的并集 - OpenCV python

    我有几个包含单个对象的重叠边界框 但它们在某些地方重叠最少 作为一个整体 它们包含了整个对象 但是 openCV 的 groupRectangles 函数不会返回包含该对象的框 我拥有的边界框以蓝色显示 我想要返回的边界框在这里以红色显示
  • C#:当存在多个类型参数时,为什么泛型类型推断不起作用?

    这是两个示例 这工作正常 void Main var list Queryable ProjectTo typeof Projection public static class QueryableExtensions public sta
  • 负载均衡器后面的 SilverStripe

    我有一个 SilverStripe 实例在 AWS 负载均衡器后面的两台服务器上运行 为了共享会话信息 我正在运行 Elasticache Redis 服务器 我将我的 php 会话存储信息设置为 ini set session save
  • 使用 JavaScript 将 JSON 文件转换为 CSV

    我正在尝试使用 JavaScript 将 JSON 文件转换为可以在 Excel 中打开的 csv 我拥有的 function exportToCsv filename rows var processRow function row va
  • 如何调试 Node.JS 子进程?

    我正在尝试调试使用以下命令创建的子 Node JS 进程 var child require child process child fork dirname task js 问题是 当在 IntelliJ WebStorm 中运行时 父进
  • 未捕获的类型错误:dispatcher.useSyncExternalStore 不是函数

    我正在尝试使用 useSelector 和 useDispatch 更改 bulma 模型的状态像这样 const isState useSelector state gt state isActiveState Model js 是 im
  • GTK 程序运行时如何禁用屏幕保护程序/电源管理/屏幕消隐?

    问题 有没有办法阻止 X 会话启动屏幕保护程序 进入省电模式或通过代码执行屏幕空白 我正在做什么 语言 C C 图形用户界面框架 GTK3 硬件 树莓派3B 软件 Raspbian 10 Buster 我的程序需要在屏幕上长时间运行 最多
  • 如何对数据库依赖行为进行单元测试 C#

    我有一个与数据库通信的 C 应用程序 我想测试一些依赖于数据库的功能 所以我想确保数据库在每次测试运行之前都有一个初始状态 我使用 NUnit 来测试我的应用程序 有什么方法可以恢复DB的初始状态 感谢您的帮助 您不对与数据库的交互进行单元