के साथ गतिशील का उपयोग करके मैंने लोगों के यहां कुछ प्रश्न देखे हैं जो उनके यूनिट परीक्षणों की आलोचना मांग रहे हैं। मुझे लगता है कि उन्हें बंद नहीं हुआ है, इसलिए मैं वही करना चाहता हूं।यूनिट टेस्ट
मैंने इन परीक्षणों को मार दिया, जो मुझे लगता है कि dynamic
का उपयोग कर अधिक पठनीय बनाया गया है, लेकिन मैं सोच रहा था कि एसओ समुदाय में किसी को भी कुछ जोड़ने के लिए कुछ भी था।
मुझे पता है कि गतिशीलता का उपयोग कुछ कारणों से बहुत विवादास्पद है, और किसी कारण से सी # डेवलपर्स के बीच धार्मिक युद्ध शुरू होता है। मैं वास्तव में उस से बचने की उम्मीद कर रहा हूं; मैं तो बस मुझे मेरा काम :)
[TestMethod]
public void TestAllocation() {
SearchView.StubPropertyNumValueThenSetUpSearchView<WellDetail>("TX", Property.WorkingInterestTaxSubtypeId);
Presenter.SetUpPhaseAndFmvValues(Phase.PhaseIdForForRenderAppraiser, 1000);
AddTheseItems(
new { PropNum = "pn1", CAN = "can1", MostRecentFmv = 10 },
new { PropNum = "pn1", CAN = "can1", MostRecentFmv = 10 },
new { PropNum = "pn1", CAN = "can1", MostRecentFmv = 10 },
new { PropNum = "pn1", CAN = "can1", MostRecentFmv = 10 },
new { PropNum = "pn1", CAN = "can2", MostRecentFmv = 40 },
new { PropNum = "pn1", CAN = "can2", MostRecentFmv = 40 },
new { PropNum = "pn1", CAN = "can2", MostRecentFmv = 40 },
new { PropNum = "pn2", CAN = "can1", MostRecentFmv = 50 },
new { PropNum = "pn2", CAN = "can1", MostRecentFmv = 50 });
Presenter.Process(SearchView, ItemsToProcess);
AssertTheseItemsExist(
new { NumberOfTimes = 4, PropNum = "pn1", CAN = "can1", FmvCalculated = 100 },
new { NumberOfTimes = 3, PropNum = "pn1", CAN = "can2", FmvCalculated = 400 },
new { NumberOfTimes = 2, PropNum = "pn2", CAN = "can1", FmvCalculated = 500 });
}
private void AddTheseItems(params dynamic[] MassUpdateDtos) {
foreach(dynamic item in MassUpdateDtos)
ItemsToProcess.Add(new MassFMVUpdateDTO(new WellDetail() { PropertyNum = item.PropNum, CountyAccountNum = item.CAN }, new FMVHistory(), 0, item.MostRecentFmv));
}
private void AssertTheseItemsExist(params dynamic[] uniqueTargets) {
foreach (dynamic target in uniqueTargets)
Assert.AreEqual(target.NumberOfTimes, ItemsToProcess.Count(f => f.PropertyNum == target.PropNum && f.CountyAccountNum == target.CAN && f.FMV == target.FmvCalculated));
}
आपके मामले में 'गतिशील' का उपयोग करने का क्या फायदा है? –
कुल मिलाकर मुझे इस समस्या में कोई समस्या नहीं है और मैं विरोधी गतिशील दुबला हूं। सवाल मैं पूछूंगा, क्या आपने वास्तव में प्रोप्नम, कैन इत्यादि के लिए ऑटो प्रॉपर्टीज के साथ एक छोटी निजी कक्षा नहीं बनाकर कुछ भी बचाया है? आप अभी भी गुमनाम प्रकारों और उनके उपयोग के निर्माण के बीच कसकर जोड़ रहे हैं और संकलक आपकी मदद नहीं करेगा। यदि आपके साथ अच्छा है, और आपकी टीम उसके साथ अच्छी है तो इसके लिए जाओ। –
@ डैनियल मुझे लगता है कि यह सिर्फ परीक्षणों को और अधिक पठनीय बनाता है; यह उन प्रासंगिक डेटा टुकड़ों पर केंद्रित है जो प्रासंगिक हैं। AddTheseItems विधि से पता चलता है कि अगर मैं उचित, स्थैतिक रूप से टाइप की गई वस्तुओं (आईएमओ) का उपयोग करना चाहता हूं तो परीक्षण कैसे फहराया जाएगा। –