vb.net - why test passes in vb? It should fail (it fails in the c# version) -


मैं Professional.Test.Driven.Development.with.Csharp में उदाहरणों का पालन कर रहा हूं I मीटर को सी # से वीबी में परिवर्तित करना (इस उदाहरण की शुरुआत है अध्याय 7)

अब होने

 <कोड> सार्वजनिक कक्षा itemtype लोक overridable संपत्ति आईडी पूर्णांक समाप्ति कक्षा लोक इंटरफ़ेस IItemTypeRepository समारोह सहेजें (itemtype itemtype के रूप में) के रूप में पूर्णांक अंत इंटरफ़ेस लोक कक्षा ItemTypeRepository औजार के रूप IItemTypeRepository सार्वजनिक समारोह सहेजें (itemtype itemtype के रूप में) के रूप में पूर्णांक इम्प्लीमेन्ट्स IItemTypeRepository.Save न्यू NotImplementedException समाप्ति समारोह समाप्त कक्षा फेंक  

और TestUnit परियोजना में

 <कोड> & lt; TestFixture & gt; सार्वजनिक कक्षा की विशिष्टता का अभिलेख SpebBase End Class  

जब vb.net में परीक्षण लिखना (असफल होना चाहिए) यह अच्छी तरह से गुजरता है (0 = 0 का पूर्णांक मान)

  सार्वजनिक कक्षा when_working_with_the_item_type_repository विरासत में मिली विशिष्टता समाप्ति कक्षा लोक कक्षा and_saving_a_valid_item_type विरासत में मिली when_working_with_the_item_type_repository निजी _result पूर्णांक निजी _itemTypeRepository IItemTypeRepository निजी _testItemType itemtype निजी _itemTypeId के रूप में के रूप में के रूप में के रूप में पूर्णांक संरक्षित ओवरराइड उप Because_of () _result = _itemTypeRepository.Save (_testItemType) End Sub & LT; टेस्ट & gt; सार्वजनिक उप then_a_valid_item_type_id_should_be_returned () _result.ShouldEqual (_itemTypeId) End Sub समाप्ति Clas  

बस सी # में संदर्भ एक ही कोड के लिए। परीक्षण विफल रहता है

<पूर्व> NBehave.Spec.NUnit का उपयोग कर; NUnit.Fraamework का उपयोग कर; OSIM.Core का उपयोग कर; नाम स्थान CSharpOSIM.UnitTests.OSIM.Core {सार्वजनिक वर्ग when_working_with_the_item_type_repository: विशिष्टता {} सार्वजनिक वर्ग and_saving_a_valid_item_type: when_working_with_the_item_type_repository {निजी पूर्णांक _result; निजी आईआईटीमटाइप रिपोजिटरी _आईटेमटाइप रिपोजिटरी; निजी मद प्रकार _testItemType; निजी इंट_आईटेमटाइपआईडी; सुरक्षित ओवरराइड शून्य के कारण () {_result = _itemTypeRepository.Save (_testItemType); } [टेस्ट] सार्वजनिक शून्य then_a_valid_item_type_id_should_be_returned () {_result.ShouldEqual (_itemTypeId); }}}

इस पंक्ति पर परीक्षण विफल रहता है:

<पूर्व> _result = _itemTypeRepository.Save (_testItemType);

ऑब्जेक्ट संदर्भ किसी ऑब्जेक्ट के उदाहरण के लिए सेट नहीं है।

इसमें सूक्ष्म अंतर है कि मूल्य-प्रकार के चर VB.NET बनाम सी। में व्यवहार करते हैं।

सी # में वह वैरिएबल बनाया गया है, जब उसे स्वचालित रूप से असाइन नहीं किया जाता है; यह शून्य है ( कुछ नहीं )। तो आप घोषणा के बाद सीधे उनका उपयोग करना शुरू नहीं कर सकते; उस चर पर पहला ऑपरेशन असाइनमेंट होना चाहिए।

दूसरी ओर, VB.NET में एक डिफ़ॉल्ट मान को अपने पहले उपयोग पर असाइन किया गया है। संख्या के लिए 0 , गलत के लिए बूलियन , 1/1/0001 12:00 पूर्वाह्न के लिए दिनांक , स्ट्रिंग आदि के लिए रिक्त स्ट्रिंग। वे शून्य नहीं हैं I तो आप घोषणा के तुरंत बाद उनका उपयोग करना शुरू कर सकते हैं।

उदाहरण के लिए

सी #:

  int i; i ++; // आप ऐसा नहीं कर सकते हैं int j = 0; J ++; // यह काम करता है  

VB.NET:

  मंद I as integer i + = 1 'ठीक काम करता है Dim j as Integer = 0 j + = 1 'यह भी काम करता है  

संपादित करें:

कृपया के व्यवहार के बारे में टिप्पणियां पढ़ें स्ट्रिंग टाइप वैरिएबल।


Comments

Popular posts from this blog

sqlite3 - UPDATE a table from the SELECT of another one -

c# - Showing a SelectedItem's Property -

javascript - Render HTML after each iteration in loop -