Java 如何测试HQL查询?
我正在寻找一种快速(真正快速)的方法来测试对hibernate查询的更改。我有一个巨大的应用程序,它有数千个不同的HQL查询(在XML文件中)和100多个映射类,我不想重新部署整个应用程序来测试对查询的一个微小更改 一个好的设置将如何使我从重新部署中解脱出来并启用快速查询检查?您可以使用它来运行查询。这将允许您在任何时候尝试某些东西时运行HQL 如果您使用的是IntelliJ,则有Java 如何测试HQL查询?,java,hibernate,testing,hql,environment,Java,Hibernate,Testing,Hql,Environment,我正在寻找一种快速(真正快速)的方法来测试对hibernate查询的更改。我有一个巨大的应用程序,它有数千个不同的HQL查询(在XML文件中)和100多个映射类,我不想重新部署整个应用程序来测试对查询的一个微小更改 一个好的设置将如何使我从重新部署中解脱出来并启用快速查询检查?您可以使用它来运行查询。这将允许您在任何时候尝试某些东西时运行HQL 如果您使用的是IntelliJ,则有 有一个来自sun的测试,但我还没有尝试过。我使用HSQLDB数据库在单元测试中测试我的HQL查询。只需创建一个实体
有一个来自sun的测试,但我还没有尝试过。我使用HSQLDB数据库在单元测试中测试我的HQL查询。只需创建一个实体管理器,将其转换到hibernate会话并进行查询
final EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("tacs-test", props);
final EntityManager entityManager = entityManagerFactory.createEntityManager();
return (Session)entityManager.getDelegate();
最好的
Anders你说的是最快的方式,我不确定你是指最快的方式开始,还是最快的方式执行正在进行的测试,以及一些初始投资来实现测试。这个答案更像是后者 我以前这样做的方式是使用和实现一些简单的集成测试 本质上,您将使用DBUnit用一组已知且具有代表性的数据设置测试数据库,然后使用纯JUnit来执行包含HQL查询的方法,并验证结果 比如说, 首先将数据库设置为仅包含一组固定数据,例如
Product Name, Price
Acme 100 Series Dynamite, $100
Acme 200 Series Dynamite, $120
Acme Rocket, $500
这是在JUnit测试用例的setup()方法中要做的事情
现在让我们假设这个实体有一个DAO,并且有一个“findProductWithPriceGreaterThan(int)”方法。在您的测试中,您将执行以下操作:
public void testFindProductWithPriceGreaterThanInt() {
ProductDAO dao = new HibernateProductDAO();
//... initialize Hibernate, or perhaps do this in setup()
List products = dao.findProductWithPriceGreaterThan(110);
assertEquals(2, products.size());
//... additional assertions to verify the content of the list.
}
在Intellij IDEA 8.1.3中,选择的机制称为“方面”。要立即测试HQL查询,请执行以下操作:
很抱歉这个RTFM问题。在eclipse市场上,您可以搜索JBoss工具并从给定列表中仅选择Hibernate工具。我编写了一个简单的工具来测试和预览HQL,这只是一个带有main方法的java类 您可以在此处找到代码: 这是屏幕截图 在eclipse中
点击此链接了解更多信息使用quick/fast,我指的是“变更测试变更测试”。。。迭代。@Chris一旦你有了DBunit测试的基类,你就可以在不到一分钟的时间内编写测试方法,它们可以运行几秒钟。没有一个带有大“运行”按钮的专用查询编辑器那么快,但是DBUnit测试的好处是,您可以保存它们并将它们用作回归测试。我个人正在使用EclipseHibernate工具来处理初始的try'n'error和DBUnit,一旦它工作了。IntellijIDEA 8是否有解决方案(=插件,随便什么)?是的,thxn。如果他们这样描述它,这正是我所需要的,但是:“从2008年1月1日起……Hibero™ 由于业务原因,已停止发布。”,那么现在呢?我想我会删除该书签,因为我已经有一段时间没有使用IntelliJ了(不是选择,只是预算)。我没有足够的代表编辑该帖子,但Hibernate Tools的正确url是:@stevedbrown:standalone editor的链接已断开。请更新它好吗?关于IntelliJ中HQL支持的更多信息如下:如果您使用的是netbeans,只需右键单击hibernate.cfg.xml(可能位于默认软件包中),然后选择“Do HQL query”最新版本的详细帮助: