मैं कुछ कोड का यूनिट परीक्षण करने के लिए Moq का उपयोग कर रहा हूं जिसमें Parallel.foreach
लूप शामिल है।एक .NET इकाई परीक्षण एक समानांतर .foreach लूप हार्डवेयर-निर्भर को कवर क्यों करता है?
व्यवस्थित करें चरण लूप के भीतर फेंकने के लिए 4 अपवाद सेट करता है और फिर AggregateException
में लपेटा जाता है।
यह मेरे i7 प्रोसेसर पर पारित हुआ और मैंने कोड में चेक किया।
बाद में, एक सहयोगी ने शिकायत की कि वह उसके लिए गुजर रहा नहीं है। यह Parallel.foreach
बाहर निकलने से पहले अपने कोर 2duo पर केवल 2 धागे पैदा कर रहा था और इसलिए AggregateException
में केवल 2 अपवाद लपेट गए थे।
सवाल यह है कि इस बारे में क्या करना है ताकि इकाई परीक्षण प्रोसेसर आर्किटेक्चर पर निर्भर न हो? विचारों के एक जोड़े: -
- मैन्युअल
AggregateException
के अपवाद जोड़ने पर कोई Microsoft article है, लेकिन हम पाश के रूप में यह कर जल्द से जल्द अवसर पर बाहर निकलने चाहिए अगर वहाँ एक समस्या है के लिए उत्सुक नहीं कर रहे हैं। ParallelOptions.MaxDegreeOfParallelism
उपयोग किए गए धागे की संख्या पर ऊपरी सीमा डाल सकते हैं। लेकिन इस जब तक 1 को ठुकरा दिया है कि कैसे इकाई परीक्षण पता कर सकते हैं कि कितने धागे वास्तव में इस्तेमाल किया जाएगा और इसलिए की स्थापना व्यवस्था और जोर चरणों propertly (जो और अधिक उचित इकाई परीक्षण की तुलना में धोखाधड़ी की तरह लगता है)?
बाल अपवादों की संख्या एक आवश्यकता नहीं है और इस तरह से परीक्षण नहीं किया जाना चाहिए। यह एक कार्यान्वयन विस्तार है। आप सही प्रकार के 1+ अपवादों की जांच कर सकते हैं। –
@ हेंकहोल्टरमैन ट्रू लेकिन मुझे उचित रूप से नकली सेट अप करना होगा। क्या आप सुझाव दे रहे हैं कि मुझे अधिकतम संख्या में नकली कॉल के लिए सेट अप करना चाहिए, लेकिन यह नहीं कहें कि इन सभी को वास्तव में अंत में बुलाया गया था? –
मुझे यकीन नहीं है कि आप किस भाग को नकल करना चाहते हैं लेकिन इससे कोई फर्क नहीं पड़ता। –