我读到的关于单元测试的大部分内容都是关于测试你的类及其行为.但是,如何测试将数据保存到数据库并从数据库中读取数据.在我们的项目中,保存和读取数据是通过Flex应用程序使用的服务完成的(使用WebORB作为网关).例如,服务读取所有可以访问某个模块的用户.您如何测试实际返回的用户是否有权访问该模块的用户?
有时能够测试从数据库中加载数据需要数据库中已存在数据.在我们的一些测试中,我们首先需要将大量的testdata保存到数据库中,然后才能测试阅读内容......
同样的事情对存储过程也有效.如果数据库中没有数据,如何测试sp?现实是,为了测试某些存储过程,我们需要十个表中的数据......
thx,Lieven Cardoen
这更像是集成测试,而不是单元测试.
我在这种情况下做的是我构建一个非持久化测试,在test-db中加载测试所需的数据,然后运行单元测试.之后,它处理当前事务,因此不存储任何数据.
这里最大的问题是,如果您的客户出现故障 - 您无法运行此类测试......另一个问题是,每次运行此类测试时,test-db中的数据都将被重置.
我同意@Gambrinus。通常,对数据层进行单元测试几乎是不可能的。最好的办法是提供一个强大的数据层接口,并在业务层中对该接口进行模拟,然后保存数据质量测试以进行集成测试。
我已经看到过尝试对ORM工具进行模拟的尝试(这使LINQ很有趣),但是它们并没有测试查询的正确性,只是测试以测试人员认为应该编写的方式编写。由于测试人员通常是针对ORM编写查询的人员,因此这毫无价值。