unit-testing - 使用内存数据库进行测试。单元测试还是集成测试?

标签 unit-testing

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

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

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

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

最佳答案

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

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

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

关于unit-testing - 使用内存数据库进行测试。单元测试还是集成测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38020225/

相关文章:

c# - 当参数不完全匹配时模拟成员调用

python - 在 Python 中构造函数调用

javascript - 单元测试、使用 JS 的数据库方法

visual-studio-2008 - Visual Studio Debugger 跳过断点

ruby-on-rails - 在 rails 上进行单元测试时,我得到路径的 "NameError: undefined local variable or method"- rails 3

objective-c - 我是否应该将已由静态分析工具检查过的项目添加到我的单元测试中?

java - Mockito 模拟调用点指向 Junit 代码(ParentRunner)

python - 应该测试 tdd 的静态文本,例如电子邮件主题?

ios - OCMock 部分模拟拆卸问题

python - 如何以可移植的方式将 tox 指向所有 python 版本(例如,无需对 tox.ini 中的路径进行硬编码)?