[英]How to test HQL queries?
我正在寻找一种快速(非常快速)的方法来测试对休眠查询的更改。 我有一个巨大的应用程序,其中包含数千个不同的 HQL 查询(在 XML 文件中)和 100 多个映射类,我不想重新部署整个应用程序来仅测试对查询的一个微小更改。
一个好的设置如何让我免于重新部署并启用快速查询检查?
在 Intellij IDEA 8.1.3 中,选择的机制称为“Facet”。 立即测试 HQL 查询:
抱歉这个 RTFM 问题。
我写了一个简单的工具来测试和预览 HQL,这只是一个带有 main 方法的 java 类。
你可以在这里找到代码: https : //github.com/maheskrishnan/HQLRunner
这是屏幕截图...
我使用 HSQLDB 数据库在单元测试中测试我的 HQL 查询。 只需创建一个实体管理器,将其转换为休眠会话并进行查询即可。
final EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("tacs-test", props);
final EntityManager entityManager = entityManagerFactory.createEntityManager();
return (Session)entityManager.getDelegate();
最好的安德斯
您说的是最快的方式,我不确定您的意思是最快的开始方式,还是执行持续测试的最快方式,以及一些初始投资来实施测试。 这个答案更多是后者。
我以前这样做的方法是使用JUnit和DBUnit实现一些简单的集成测试。
从本质上讲,您将使用 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.
}
在日食
点击此链接了解更多信息http://docs.jboss.org/tools/OLD/2.0.0.GA/hibernatetools/en/html/plugins.html
在 eclipse Market 中,您可以搜索 JBoss Tools 并从给定列表中仅选择 Hibernate 工具。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.