c# - 使用在 UI 中执行的业务逻辑对数据库应用程序进行单元测试

标签 c# database unit-testing

我自己管理一个相当大的应用程序(5 万多行代码),它管理着一些相当关键的业务操作。为了简单地描述该程序,我会说它是一个精美的 UI,能够显示和更改数据库中的数据,它管理着大约 1,000 个出租单元、大约 3000 个租户和所有财务。

当我进行更改时,由于它的代码库太大,有时我会在其他地方破坏某些东西。我通常通过检查我在功能级别更改的内容(即我运行程序并通过 UI 工作)来测试它,但我无法测试每种情况。这就是我想开始进行单元测试的原因。

但是,这不是一个真正的三层程序,包括数据库层、业务层和 UI 层。很多业务逻辑是在 UI 类中执行的,很多事情是在事件上完成的。使事情复杂化的是,一切都是数据库驱动的,而且(到目前为止)我还没有看到关于如何对数据库交互进行单元测试的好建议。

开始对此应用程序进行单元测试的好方法是什么?记住。我以前从未做过单元测试或 TDD。我是否应该重写它以从 UI 类中删除业务逻辑(大量工作)?或者有更好的方法吗?

最佳答案

我会首先使用一些工具来通过 UI 测试应用程序。有许多工具可用于创建模拟用户点击应用程序的测试脚本。

我还建议您在添加新功能时开始添加单元测试。应用程序开发完成后创建完整的覆盖范围非常耗时,但如果您以增量方式进行,则可以分配工作量。

我们通过单独的数据库来测试数据库交互,该数据库仅用于单元测试。这样我们就有了一个静态的、可控的数据集,这样请求和响应就可以得到保证。然后我们创建 C# 代码来模拟各种场景。为此,我们使用 nUnit。

关于c# - 使用在 UI 中执行的业务逻辑对数据库应用程序进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2609204/

相关文章:

c# - [ComVisible] 默认和公共(public)类 COM 公开有什么关系?

mysql - linux 中用于处理数据库(oracle、mysql)的最佳 Gui 编辑器?

mysql - 您会在父表中添加一个owner_id,还是在子表中添加一个is_owner?

java - 如何模拟 servletContext 而不是 Servlet 或 HttpServletRequest?

php - 如何在 PHP 单元测试中模拟在构造函数中调用的方法?

java - @Valid不会触发@Repository中的验证

c# - 如何在第 n 次出现时拆分字符串?

c# - 将参数中的字段传递给外部方法调用是否违反了开放/封闭原则?

c# - 如何枚举 IAsyncEnumerable<T> 并为每个元素调用异步操作,从而允许每个迭代/操作对并发?

.net - sql如何同时选择和更新