5

मैं स्प्रिंग यूनिट परीक्षण और विशेष रूप से लेनदेन इकाई परीक्षणों के बारे में कुछ चर्चा करने और शुरू करने के लिए लिख रहा हूं।स्प्रिंग फ्रेमवर्क - यूनिट परीक्षण डिजाइन

@RunWith(SpringJUnit4ClassRunner.class) 
@TransactionConfiguration 
@ContextConfiguration(locations={"/context/ServiceTest-context.xml"}, inheritLocations=false) 
public class ServiceTests extends AbstractTransactionalJUnit4SpringContextTests { 

    @Test 
    public void testSomething() {} 

    @Test 
    public void testSomethingElse() {} 
} 

हमारे परीक्षणों वर्गों में से प्रत्येक अपने स्वयं के परीक्षण संदर्भ है:

वर्तमान में हम इतने तरह एनोटेट वर्गों की एक किस्म में चारों ओर 441 परीक्षण किया है।

हमें एक ऐसी समस्या का सामना करना पड़ रहा है जिसमें हम व्यक्तिगत परीक्षा कक्षाएं या व्यक्तिगत पैकेज चलाते हैं, परीक्षण ठीक चलते हैं।

हालांकि जब हम मैवेन या हडसन एकीकरण जैसे कुछ का उपयोग करके हमारे सभी परीक्षणों (वर्तमान में> 400) को चलाने के लिए इसे स्केल करना चाहते हैं।

mvn test 

हम एक बात हो और उसके बाद जावा जीसी सीमा का अनुभव करने के लिए त्रुटियों को पार कर शुरू करते हैं।

अब मुझे यह महसूस हो रहा है कि यह किसी भी स्मृति सीमा को बढ़ाने या चेतावनियों को बंद करने की आवश्यकता के बजाय हमारे परीक्षण योजना डिजाइन पर है।

क्या कोई भी अपने अनुभव साझा कर सकता है और जिस तरह से उन्होंने एक ही समस्या हल की है?

Eggsy

+0

क्या आप व्यक्तिगत परीक्षणों के बीच परीक्षण संदर्भ साझा करते हैं और एक विशिष्ट फोर्कोड कॉन्फ़िगरेशन का उपयोग करते हैं? http://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html#forkMode –

+0

परीक्षण संदर्भ व्यक्तिगत परीक्षणों के बीच साझा किए जाते हैं हालांकि उन्हें व्यक्तिगत परीक्षण कक्षाओं/सूटों के बीच साझा नहीं किया जाता है। हमारे पास आम तौर पर एक टेस्ट क्लास होता है जो एक संदर्भ का उपयोग करता है और उसके बाद उस वर्ग के भीतर एक से अधिक परीक्षण होते हैं जो समान संदर्भ का उपयोग करते हैं। क्या इसका कोई मतलब है? हम एक विशिष्ट फोर्कोड कॉन्फ़िगरेशन का उपयोग नहीं करते हैं - वह क्या करता है? (उस मेवेन विकल्प का कभी भी उपयोग नहीं किया गया) – eggsy84

+0

फोर्कोडोड जानकारी की तलाश में किसी के लिए उपयोगी लिंक (http://maven.apache.org/plugins/maven-surefire-plugin/examples/class-loading.html) – eggsy84

उत्तर

1

मैं बहुत यकीन है कि कंटेनर अपने जीवन चक्र जब तक आप स्पष्ट appCtx.close फोन()

की अवधि के लिए सभी संदर्भों पर पकड़ जाएगा वहाँ कुछ विशेष कारण है कि प्रत्येक परीक्षण का अपना संदर्भ होता है? क्योंकि जब तक आपके पास ऐसा करने का कोई विशेष कारण नहीं है .... मैं कहूंगा, ऐसा मत करो। जब तक आपके पास उचित सेटअप और टियरडाउन विधियां हों, तब तक आपको साझा करने में सक्षम होना चाहिए। भले ही आप एक साथ समान परीक्षण समूह करते हैं और केवल उन शेयर संदर्भों को भी रखते हैं। अधिक जानकारी कृपया!

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