![](/img/trans.png)
[英]Pivotal GemFire 9.3.0: Spring Data GemFire XML config in GemFire cluster
[英]How to start Spring Boot app without depending on Pivotal GemFire cache
我有一個配置了Pivotal GemFire ClientCache
實例及其對應域對象的Spring Boot應用程序。 我還使用Spring Boot Test進行單元測試。 對於每個測試用例,無論是通過類還是通過Maven構建,如果GemFire緩存關閉,Spring ApplicationContext
無法加載。
如何在不依賴GemFire緩存的情況下啟動Spring Boot應用程序?
我不確定我是否完全按照您的意思...
“ 對於每個測試用例執行,無論是通過類還是通過Maven構建,如果GemFire緩存關閉,Spring
ApplicationContext
無法加載。 ”
您是否正在為測試類中的每個測試用例(方法)重新創建ClientCache
實例?
如果是這樣,那么這樣做可能會很棘手,因為即使在調用ClientCache.close()
,GemFire可能還沒有完全“關閉”並釋放ClientCache
實例使用的所有資源。 但是,通常這並不妨礙在隨后的測試用例執行時重新創建Spring ApplicationContext
。 由於ClientCache
實例骯臟或陳舊,並保留了先前(或最后)測試案例執行的舊狀態,因此通常只會導致后續測試失敗。
您還在測試用例方法上使用Spring的@DirtiesContext
嗎?
通常,明智的做法是每個測試類循環ApplicationContext
和GemFire緩存實例(例如ClientCache
),其中測試類中的每個測試用例方法將使用相同的ApplicationContext
和ClientCache
實例; 這是最理想的。
因此,我有兩件事要與您分享:
首先,看看用於Apache Geode / Pivotal GemFire項目的新Spring Boot 。 文檔在這里 。 我近一個月前宣布了該項目的可用性。 該項目從“客戶端”的角度來使用Pivotal GemFire構建Spring Boot應用程序。 也就是說,默認情況下它為您提供了一個自動配置的ClientCache
實例。
具體來說,從此處開始, 查看 適用於Pivotal GemFire的測試套件的Spring Boot 。 幾乎所有這些測試類都使用ClientCache
實例並測試Pivotal GemFire的各個方面,例如CQ或Security等。
在某些測試類中,我使用了“模擬” ClientCache
實例(例如,該測試類 ,尤其是該測試配置 )。 然而,在許多其他情況下,我用了一個活的GemFire ClientCache
例如,對於例如或者這個測試類 ,這是有趣,因為這個測試類,甚至啟動一個服務器的ClientCache
實例(測試本身)來連接。
Spring Boot中用於Apache Geode / Pivotal GemFire的所有測試協調邏輯均由另一個新項目提供,即Apache Geode / Pivotal GemFire的Spring Test 。 不幸的是, Apache Geode / Pivotal GemFire的Spring Test在很大程度上仍是WIP,因此尚無文檔。 但是,我已經廣泛使用了這個新的測試項目來為Apache Geode / Pivotal GemFire測試Spring Boot 。 您將在擴展類(例如ForkingClientServerIntegrationTestsSupport
等)中看到它的存在。
總之,將新的Pivotal GemFire的Spring Boot和Pivotal GemFire的 Spring Test項目用作編寫更有效的單元和集成測試的指南。
最后,如果您有一個示例GitHub存儲庫可以重現您的問題,那么我可以為您指明正確的方向。
希望這可以幫助!
問候,約翰
對於單元測試,請使用其他配置文件。 說application-ut.yaml並要求spring不要使用任何緩存實現庫:
application-ut.yaml (在條目下方添加並刪除您為Gemfire配置的所有實現)
spring.cache.type : simple
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.