1
我有一些自动化测试,我为了测试MongoDB相关库而运行。为了做到这一点,我启动了一个临时数据目录的Mongo服务器,并在一个临时端口上连接到它,并运行一些测试。告诉MongoDB的最佳方式是什么?
显然,这会导致竞争状态。所以在这些测试的第一个版本中,我暂停了一段固定的时间,并且在测试开始前等待mongod
有时间开始。
这是令人沮丧的(且效率低下),所以我决定监测标准输出,并等待关于mongod
的标准输出流线相匹配的正则表达式:
/\[initandlisten\] waiting for connections/
这得到它的工作。这么好,然后我准备回圈,并试图找到一个更强大的方法来做到这一点。我记得一个名为“embedmongo”的Java库运行了基于MongoDB的测试,并认为它必须解决这个问题。而它这样做(GitHub):
protected String successMessage() {
return "waiting for connections on port";
}
...并使用它来找出该进程是否已经正常启动。
那么,我们是对的吗?正在检查mongod
进程输出日志(它是否曾经国际化过吗?消息的措辞能否改变?)这样做的最好方法是什么?还是有更强大的东西,我们都失踪了?