का उपयोग करने से पहले @ स्प्रिंगबैक (झूठी) पर काम नहीं कर रहा है, मेरे स्प्रिंग एप्लिकेशन में एक जुनीट टेस्ट में, मैं एक सेटअप विधि में बहुत सारे डेटा डालना चाहता हूं, और फिर इसका परीक्षण करने के लिए इसका उपयोग करता हूं। हालांकि, जो भी @Before
विधि से किया जाता है प्रत्येक परीक्षा के बाद वापस लुढ़का हुआ प्रतीत होता है, भले ही मैं @Rollback(false)
@ रोलबैक (झूठा) स्प्रिंगजेनिट 4 क्लासरुनर
साथ विधि व्याख्या यहाँ मैं क्या कर रहा हूँ का एक सरलीकृत संस्करण है:
public class TestClass
{
@Autowired
MyService service;
@Before
public void setup()
{
if(service.getById(1) == null)
{
Thing thing = new Thing();
thing.setId(1);
service.create(new Thing(1))
}
}
}
मैंने @BeforeClass
का उपयोग करने का भी प्रयास किया है, लेकिन इसके लिए विधि स्थिर होने की आवश्यकता है, और किसी भी @Autowired
से पहले निष्पादित करने के लिए सेटर विधियों को बुलाया जाता है, इसलिए @BeforeClass
रनों पर मुझे कॉल करने की आवश्यकता वाली सेवाओं तक पहुंच नहीं मिल सकती है।
मैंने @PostConstruct
का उपयोग करने का प्रयास किया, लेकिन लेनदेन उपलब्ध कराने के साथ समस्याएं हैं (और मेरा सेटअप ऐसा है कि एक लेनदेन शुरू होने पर ही हाइबरनेट सत्र उपलब्ध होता है)। अजीब तरह से एक सत्र उपलब्ध प्रतीत होता था, लेकिन एक ही सत्र के भीतर से दो ऑब्जेक्ट्स बराबर नहीं थे, जिसका अर्थ है कि हाइबरनेट 1-स्तरीय कैश असफल रहा, या प्रत्येक ऑपरेशन एक अलग सत्र में हो रहा था। @BeforeTransaction
एक ही व्यवहार को प्रदर्शित करने लग रहा था।
आपने कक्षा या विधि स्तर पर '@ रोलबैक 'एनोटेशन कहां रखा? – Ralph
@ राल्फ मैंने 'सेटअप()' विधि '@ रोलबैक (झूठी)' पर और फिर कक्षा पर भी कोशिश की है जबकि 'रोलबैक' के साथ परीक्षण विधियों को भी एनोटेट किया है। –
क्या आपको कभी यह हासिल करने का कोई तरीका मिला है? – Arjan