2010-06-22 51 views
0

我一直在找一些假设数据库查询的结果是按特定顺序执行的单元测试,但是运行的查询不包含order by子句。随机化数据库行结果

我想找到更多的这些单元测试,以便我可以检查测试在其假设中是否存在错误,或者代码在缺乏指定顺序时出错。我使用的是java,junit,spring,hibernate,dbunit,jdbc和postgresql。

我的一个想法是拦截测试查询的某个地方,如果查询不包含order by子句,则捕获所有结果并以随机顺序返回。

哪里可以拦截和检查查询最简单的地方?

是否有其他简单的方法来识别这些测试?

回答

1

你可以看看扩展Hibernate的EmptyInterceptor,特别是onPrepareStatement方法。如果作为参数传递的sql查询不包含order by子句,则可以尝试向其添加order by random()

+0

如果使用Spring的LocalSessionFactoryBean配置sessionFactory,我会尝试制作一个特定于测试的配置,在其中添加拦截器(entityInterceptor属性)。 – 2010-06-22 03:58:13

+0

谢谢,得到了工作。现在要处理这些错误(例如,筛选出不同的查询) – 2010-06-22 04:03:43