2013-04-23 7 views
5

के साथ उचित आंसू हाइबरनेट परीक्षण वर्तमान में मैं अपने परीक्षण सूट में मौजूद प्रत्येक परीक्षण के बाद नीचे का उपयोग कर रहा हूं। हालांकि यह बहुत धीमा हो जाता है क्योंकि प्रत्येक परीक्षण के बाद एच 2 को एप्लिकेशन संदर्भ को फिर से लोड करना होता है। क्या मेरे सभी ऑब्जेक्ट्स को साफ़ करने का कोई तेज तरीका है, इसलिए मैंने परीक्षणों के बीच नहीं ले लिया है? हठ संदर्भ स्पष्ट है, जिससे सभी प्रबंधित संस्थाओं अलग हो रहे हैं:एच 2

@org.junit.After 
public void tearDown() throws Exception { 
    context.close(); 
} 
+0

आप प्रत्येक परीक्षण के अंत में लेनदेन को वापस क्यों नहीं ले रहे हैं? http://stackoverflow.com/questions/7618914/spring-integration-test-does-not-roll-back – ilcavero

+1

जैसे कुछ अगर आपके लिए अच्छा था, तो क्या आप इसे स्वीकार कर सकते हैं? खुले से स्थिति बदलता है। Thx –

+0

'संदर्भ' के आयात/तत्कालता को देखना अच्छा लगेगा। –

उत्तर

7

context.clear()

EntityManager.clear की कोशिश करो। उन संस्थाओं में किए गए परिवर्तन जिन्हें डेटाबेस में नहीं पहुंचाया गया है, जारी नहीं रहेगा।

सत्र। स्पष्ट: सत्र को पूरी तरह से साफ़ करें।

इसके अलावा, आप यह सुनिश्चित कर सकते हैं कि प्रत्येक परीक्षण में उपयोग किए गए इकाई प्रबंधक/सत्र एक सिंगलटन पैटर्न को कार्यान्वित करके समान है। और आप सभी तालिकाओं से डेटा साफ़ करने के लिए एक गतिशील एसक्यूएल स्क्रिप्ट का उपयोग कर सकते हैं। दोनों PersistenceHelper here के तहत वर्णित हैं।

+0

ग्लेन, इतने लंबे समय तक खेद है, इसने इस मुद्दे का ख्याल रखा। – zmanc

संबंधित मुद्दे