java - 使用MongoDB进行java单元测试

  显示原文与译文双语对照的内容

我的选择数据库是 MongoDB 。 我正在编写一个数据层API来从客户端应用程序抽象实现细节- 即,我实际上是提供一个单一的public 接口。

我正在测试我的逻辑,因为我使用的是TDD方式。 在每个 单元测试 之前,调用一个 @Before 方法来创建一个数据库单元,在测试完成后调用 @After 方法。 这有助于促进单元测试之间的独立性。

几乎所有的单元测试,换句话说,执行上下文查询需要某种类型的插入逻辑,才能在手工执行之前出现。 我的public 接口提供了一个插入方法- 然而,使用这个方法作为每个 单元测试的前置逻辑。

实际上我需要一些模拟机制,但是我并没有经历模拟框架的经验。

在这些情况下其他人做什么? 也就是说,人们如何使用与数据库交互的单元测试 代码?

同样,我的public 接口连接到外部配置文件中定义的数据库。

时间: 原作者:

外部系统测试不同的是,与数据库( NoSQL 或者其他) 对话的技术测试不是单元测试,而是测试与外部系统的交互,而不仅仅是测试独立的代码单元。 然而,与数据库交谈的测试通常是非常有用的,而且通常足以与它的他单元测试运行。

通常我有一个服务接口( 例如 UserService ),它封装了处理数据库的所有逻辑。 依赖UserService的代码可以使用UserService的模拟版本,并且很容易测试。

测试与Mongo的服务实现时,在本地机器上编写启动/停止Mongo进程的java代码最容易,并让你的MongoUserService连接到该服务器上,以获得某些注释。

在测试MongoUserService时,可以尝试模仿数据库的功能,但通常太容易出错,并且不测试真正的数据库。 所以在为MongoUserService编写测试时,为每个测试设置一个数据库状态。 查看以获得一个框架,该框架使用数据库进行这样的操作。

原作者:
...