वहाँ Thread.Sleep का उपयोग किए बिना इकाई परीक्षण ScheduledExecutorService.scheduleAtFixedRate के लिए एक रास्ता है?

वोट
0

मैं इकाई परीक्षण करने के लिए एक वर्ग है कि ScheduledExecutorService.scheduleAtFixedRate का उपयोग कर एक कार्य निष्पादित करता है चाहते हैं, और मैं Thread.Sleep है, जो धीमी गति से और के रूप में नहीं है का उपयोग किए बिना अनुसूची एक इकाई परीक्षण में काम के कई रन के लिए एक रास्ता नहीं मिल रहा है सटीक रूप में मैं चाहता हूँ। वहाँ समय बीतने के अनुकरण करने के लिए निष्पादक सेवा या अन्य समाधान करने के लिए एक मज़ाक उड़ाया समय संदर्भ पारित करने के लिए कोई तरीका है?

02/12/2019 को 23:59
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
0

यूनिट टेस्ट के व्यवहार को सत्यापित अपने कोड अपने निर्भरता से अलगाव में।

के कार्यान्वयन ScheduledExecutorServiceJVM द्वारा प्रदान की जाती हैं और इसलिए वे आपके कोड है, लेकिन एक निर्भरता है कि एक के साथ प्रतिस्थापित किया जाना चाहिए परीक्षण डबल अपने कोड unittesting है। (वहाँ एक परीक्षण की जरूरत है के लिए एक वैध सेटअप हो सकता है ScheduledExecutorServiceकार्यान्वयन निष्पादित किया जाना है, लेकिन यह एक नहीं है इकाई परीक्षण तो।)

तो मामले में आप एक इकाई परीक्षण (और नहीं यानी के रूप में परीक्षण के कुछ अन्य प्रकार लिख रहे हैं एकीकरण परीक्षणों , कि का उपयोग किया जा करने के लिए होता JUnit framwork ) यदि आप एक बनाना चाहिए नकली के लिए ScheduledExecutorServiceएक का उपयोग कर अंतरफलक मजाक ढांचे (जैसे Mockito या समान रूप से) और सत्यापित करें कि आपके कोड कॉल नकली पर वांछित विधि।

इस सत्यापन के लिए अपने परीक्षण सक्षम करने के लिए आप चाहिए इंजेक्षन के कार्यान्वयन ScheduledExecutorServiceके लिए अपने कोड (अधिमानतः के माध्यम से में इंटरफ़ेस निर्माता इंजेक्शन ) और नहीं अपने राशि परीक्षण के अंतर्गत इकाई यह अपने आप को प्राप्त करने के लिए, आप एक है ताकि सीवन , जिस पर आप का असली कार्यान्वयन विनिमय कर सकते हैं ScheduledExecutorServiceइंटरफ़ेस इकाई परीक्षण के लिए नकली whith।

03/12/2019 को 01:29
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more