我自己管理一个相当大的应用程序(50k+行代码),它管理一些相当关键的业务操作.为了简单地描述这个程序,我想说它是一个奇特的用户界面,能够显示和更改数据库中的数据,它管理着大约1000个租赁单元,大约3k租户和所有财务.

当我进行更改时,因为它的代码库非常大,我有时会在其他地方 destruct 某些东西.我通常会通过在功能层面上修改的东西(即我运行程序并通过UI工作)来测试它,但我不能针对每种情况进行测试.这就是为什么我想开始单元测试.

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

如何开始此应用程序的单元测试将是一个很好的方式.请牢记在心.我以前从未做过单元测试或TDD.我是否应该重写它以从UI类中删除业务逻辑(大量工作)?还是有更好的办法?

推荐答案

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

我还建议您在添加新功能时开始添加单元测试.一旦开发了应用程序,创建完整的覆盖范围是很费时的,但是如果您以增量的方式这样做,那么您就可以分配工作.

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

Database相关问答推荐

为多个列 Select 最新的非空值

如何正确创建mongo模型和客户端?

mongodb聚合从另一个查询中获取值

如何在 SQL Server 中将索引从一个表复制到另一个表

Spring Boot:如何使用多个模式并在运行时动态 Select 使用哪一个

如何将开发数据库更改移动到生产数据库?

用于存储年份的 MySQL 类型:Smallint 或 Varchar 或 Date?

设计用于存储多人游戏的各种要求和统计数据的表格

在插入数据库之前而不是在输出时转义 HTML 是不是一个坏主意?

Boyce-Codd 范式的良好 KISS 描述是什么?

将 `tsv` 文件插入 postgresql 数据库

从 XML 读取数据

使用 jQuery 动态填写表单值

SQL查询7天前的数据

使用十进制数据类型(MySQL / Postgres)是否会影响性能

没有自动增量的sqlalchemy主键

在数据库中存储年份

将文本列设为唯一键

您是否应该将自引用表列设为外键?

我可以在 /sdcard 上下载 SQLite 数据库并从我的 Android 应用程序访问它吗?