我們將休眠搜索及其 orm 映射器與 JPA 一起用于我們基于 Java 的搜索服務。我面臨的挑戰是撰寫單元測驗,例如:
- 插入JPA物體車“特斯拉v3”
- 搜索“特斯拉”
- 驗證 JPA 物體“tesla v3”是否包含在休眠搜索的結果集中
為此,我的第一個想法是運行某種記憶體中的單節點彈性集群,針對該集群進行測驗,然后將其拆除。但似乎不存在這樣的事情。
官方檔案(https://docs.jboss.org/hibernate/stable/search/reference/en-US/html_single/)沒有解釋休眠搜索的單元測驗。
現在我很好奇你是如何測驗你的休眠搜索實作的。我需要一個測驗實體嗎?您是否在每次測驗運行之前重命名測驗索引并清除它?
我很感激每一個輸入!
uj5u.com熱心網友回復:
我不會將這些稱為“單元”測驗,因為您還在測驗與另一個軟體(Elasticsearch)的集成。您正在做的是,IMO,顯然是集成測驗。
在測驗中啟動 Elasticsearch 的最簡單方法可能是使用TestContainers:
- 以下是啟動 Elasticsearch 容器的方法:https ://www.testcontainers.org/modules/elasticsearch/
- 這是在 JUnit 4 中執行此操作的方法:https ://www.testcontainers.org/test_framework_integration/junit_4/
如果您使用Quarkus,它會更容易,因為 Quarkus 會自動為您的測驗啟動一個 Elasticsearch 實體,這要感謝Dev Services。
至于初始化/重置索引,這取決于您如何運行測驗。
如果您為每個測驗啟動整個應用程式,您可以利用自動模式管理讓 Hibernate Search 在啟動/拆卸時重置索引:只需在您的測驗配置中設定hibernate.search.schema_management.strategy為。drop-and-create-and-drop
如果您為整個測驗類(通常是 Spring 測驗)或測驗套件只啟動一次應用程式,那么您可以添加使用 JUnit 注釋的方法@Before/@After以在每次測驗之前或之后手動重新創建索引,使用 Hibernate Search架構管理 API。JUnit 提供了各種撰寫這種代碼并在所有測驗中重用它的方法:JUnit 4 中的“規則”、JUnit 5 中的“擴展”……但這需要更多的 JUnit 專業知識。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/485204.html
