在与MongoDB等最终一致的数据库合作时,撰写测试案例的最佳做法是什么?
我的现任职务是Mongodb,由3-node Master/Slave/Slave组成,由奴隶制度确定。 这意味着,诺德硕士只用于书写,而两个奴隶节只用于阅读。
有关奴隶的数据必须一致,时间相对较少,取决于操作和数据规模。 例如,删除作业的面积约为3米,批量为1 000件。
我的目标是考验我的代索的行动。 它们可能很简单,例如获得ById,删除,插入,或像发现ByExample。 我需要核实他们的工作是正确的,最终在一定时间范围内可以接受。
这是我目前对删除行动进行测试的情况,例如:
@Test
public void deleteTest() throws InstantiationException,
IllegalAccessException {
MyObject obj = new MyObject();
obj.setName("test object");
obj.save(obj);
MyObject found = dao.findById(obj.getId());
logger.info ("before: " + found);
Assert.assertEquals(obj, found);
dao.delete(obj.getId());
MyObject deleted = null;
long start = System.nanoTime();
do {
//TBD: need to add escape condition/timeout, else may be infinite loop....
deleted = dao.findById(obj.getId());
logger.info ("While: " + deleted);
} while (deleted!=null);
logger.info("It took " + ((System.nanoTime()-start)/1000000.00) + " ms for delete to be consistent");
Assert.assertEquals(null, d1);
}