人们如何对他们的业务应用程序进行单元测试?我已经看到了很多带有“简单测试”示例的单元测试示例。例如一个计算器。人们如何对数据密集型应用程序进行单元测试?您如何汇总样本数据?在许多情况下,一项测试的数据可能根本无法用于另一项测试,这使得仅拥有一个测试数据库变得困难吗?

测试代码的数据访问部分非常简单。它正在测试所有似乎难以测试的数据处理方法。例如,想象一个发布过程,其中有大量的数据访问权来确定要发布的内容,调整数量等。在执行一些临时步骤(需要进行测试)以及随后的测试之后,这些步骤才能确保发布成功。成功。这些步骤中的某些实际上可能是存储过程。

过去,我曾尝试将测试数据插入测试数据库中,然后运行测试,但老实说,编写这种代码(而且容易出错)非常痛苦。我还尝试过只是预先构建测试数据库并回滚所做的更改。那行得通,但是在很多地方您也不容易做到这一点(很多人会说这是集成测试;就这样,我仍然需要能够以某种方式进行测试)。

如果答案是没有一个很好的方法来解决这个问题,而目前它只是很烂,那也很有用。

任何想法,想法,建议或技巧都将受到赞赏。

最佳答案

在尝试使用回滚解决方案进行这些集成测试时,我必须附上@Phil Bennett的评论。

我有一个非常详细的帖子,关于对数据访问层here进行集成测试

我不仅展示了示例数据访问类,基类和示例DB事务处理夹具类,还展示了带有示例数据的完整CRUD集成测试。使用这种方法,您不需要多个测试数据库,因为您可以控制每次测试中输入的数据,并且在测试完成后,所有事务都会回滚,因此您的数据库是干净的。

关于在应用程序内部进行单元测试业务逻辑,我还要加上@Phil和@Mark的注释,因为如果您模拟出业务对象具有的所有依赖关系,一次测试一个实体的应用程序逻辑将变得非常简单;)

编辑:那么,您是否正在寻找一个巨大的集成测试,以验证从逻辑预数据库/存储过程运行到逻辑的所有内容,并最终验证返回路径?如果是这样,您可以将其分为两个步骤:


1-单元测试在推送数据之前发生的逻辑
进入您的数据访问代码。对于
例如,如果您有一些代码
根据计算一些数字
一些属性-编写一个测试
只检查看逻辑是否
这1个功能可以满足您的要求
它要做。模拟出任何依赖
在数据访问类上,这样您就可以
忽略此测试
仅应用逻辑。
2-集成测试一旦您采取了自己的逻辑会发生
操纵的数据(从前一个
我们进行单元测试的方法),然后调用
适当的存储过程。做
在特定于数据的测试中
类,因此您可以在其后回滚
完成。保存后
程序已运行,请执行查询
针对数据库来获取您的
现在我们已经做了一些反对
逻辑对数据进行验证
具有您期望的值
(后存储过程逻辑/ etc)


如果您需要在数据库中输入一个条目来运行存储过程,则只需在运行包含逻辑的存储过程之前插入该数据即可。例如,如果您有需要测试的产品,则可能需要插入供应商和类别条目,因此在插入产品之前,请对供应商和类别进行快速而肮脏的插入,以便产品插入按计划进行。

关于unit-testing - 您如何对业务应用程序进行单元测试?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38598/

10-14 17:11
查看更多