内存数据库。 单元测试或集成测试?

unit testintegration test的概念是明确的:前者测试一个组件,后者测试多个组件。

我使用Effort来测试我的Entity Framework存储库。 Effort是一个内存数据库实现,所以我们不会碰到实际的数据库,而只是内存,所以速度更快。

我通过创建一些假数据并用这个假数据填充内存数据库来测试我的存储库。 我没有嘲笑数据上下文。 这些应该被认为是单元测试还是集成测试?

编辑 :我正在测试我的仓库的方法 - 例如CustomerRepository.GetAllCustomers。 我用5个客户填充这个内存数据库,调用这个方法,并断言我将这5个客户重新加入。


根据您对CustomerRepository.GetAllCustomers方法的测试描述,由于您没有使用其他服务(外部或您的应用程序内) ,因此它看起来是单元测试。

如果你的方法只是简单地使用db Connection对象来检索内存数据库中的行而不是实数据库,并且没有其他公共服务被调用或被模拟(如果调用),那么你正在做一个单元测试(这似乎是我即使你没有共享代码CustomerRepository.GetAllCustomers )。

正如前面的答案已经指出的那样,仅仅使用内存数据库不足以说明你的测试是单元还是集成。 如果你正在测试DAO layer本身。


使用内存数据库是没有足够的信息来告诉你是否正在编写单元测试或集成测试。

如果你只是像一个类的方法一样测试一个小组件,那么是的,这是一个单元测试。 但是,如果该方法调用其他公共方法来完成它的工作,并且不嘲笑这些依赖关系,那么这将是一个集成测试。

链接地址: http://www.djcxy.com/p/92337.html

上一篇: memory database. Unit test or integration test?

下一篇: How to validate commutativity involving the dif/2 constraint?