使用内存数据库进行测试。单元测试或集成测试?

时间:2016-06-24 18:48:58

标签: unit-testing

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

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

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

编辑:我正在测试我的存储库的方法 - 例如CustomerRepository.GetAllCustomers。我正在与(比如说)5个客户填充这个内存数据库,调用该方法,并断言我让这5个客户回来。

2 个答案:

答案 0 :(得分:4)

根据您对方法CustomerRepository.GetAllCustomers的测试说明,它确实是一个单元测试,因为您没有使用其他服务(外部或在您的应用内)

如果你的方法只是使用db Connection对象从内存db而不是real db中检索行,而没有其他公共服务被调用或被模拟(如果被调用)那么你正在进行单元测试(即使你没有共享CustomerRepository.GetAllCustomers的代码,对我来说似乎也是如此)。

正如之前的回答所指出的那样,仅仅使用内存中的db并不足以判断您的测试是单元还是集成esp。如果您正在测试DAO layer本身。

答案 1 :(得分:0)

使用内存数据库并不足以判断您是在编写单元测试还是集成测试。

如果你只测试一个类似方法的小组件,那么它是一个单元测试。但是,如果该方法调用其他公共方法来完成它的工作并且你没有模拟那些依赖项,那么这将是一个集成测试。