मैं वर्तमान में उचित इकाई-परीक्षण सीखने की कोशिश कर रहा हूं। तो अब मैं एक वर्ग के लिए यूनिट-टेस्ट लिखने की कोशिश कर रहा हूं जो किसी XML-फ़ाइल से डेटा को उचित ऑब्जेक्ट्स में मैप करना चाहिए। बेशक कक्षा की सभी कार्यक्षमता संबंधित XML-file के अस्तित्व पर निर्भर है। एक्सएमएल-फाइल कक्षा के निर्माता में लोड की जाती है।एक वर्ग को यूनिट-टेस्ट कैसे करें, जिसमें एक विशिष्ट फ़ाइल की उपस्थिति होनी चाहिए
मैं एन # एनआईएनआईटी के साथ सी # का उपयोग कर रहा हूं।
[Test]
public void ShouldAllowInstanceToBeCreatedWhenXMLFileIsPresent()
{
if (File.Exists(SettingsReader.XML_SETTINGS_PATH))
{
SettingsReader settingsReader = new SettingsReader();
Assert.AreNotEqual(null, settingsReader);
}
}
[Test]
[ExpectedException("Telekanzlei.Clientmanager.XMLDataLayer.XMLFileNotFoundException")]
public void ShouldThrowExceptionWhenXMLFileIsNotPresent()
{
if (!File.Exists(SettingsReader.XML_SETTINGS_PATH))
{
SettingsReader settingsReader = new SettingsReader();
}
else
throw new XMLFileNotFoundException();
}
मैं अगर परीक्षा में फ़ाइल के अस्तित्व की जाँच जाने के लिए एक उचित तरीके से है, इसलिए उन परीक्षण पर कोई सुझाव भी स्वागत कर रहे हैं यकीन नहीं है: अब तक मैं दो परीक्षण मिल गया है। लेकिन मेरा सवाल यह है कि निम्नलिखित परीक्षणों के साथ कैसे आगे बढ़ना है। स्पष्ट रूप से सभी निम्न परीक्षण विफल होने जा रहे हैं, यदि XML-file मौजूद नहीं है।
तो क्या मुझे लगता है कि एक्सएमएल फ़ाइल मौजूद है, जबकि ध्यान में रखते हुए, एक असफल परीक्षण का मतलब यह हो सकता है कि यह नहीं है? यह मेरे लिए सही प्रतीत नहीं होगा।
क्या इस तरह की समस्या को संभालने के लिए कोई सामान्य पैटर्न है? किसी भी मदद
संपादन के लिए
Thx:, दूसरे टेस्ट दुबारा लिखा है, तो फ़ाइल वास्तव में मौजूद था के रूप में यह असफल रहा था ...
EDIT2: मई यह आपको बताने के लिए मदद कर रहा है, क्या वास्तव में SettingsReader कर देता है। अब तक यह इस तरह दिखता है:
public class SettingsReader
{
public static readonly string XML_SETTINGS_PATH = "C:\\Telekanzlei\\Clientmanager_2.0\\Settings.xml";
public XElement RootXElement { get; private set; }
public SettingsReader()
{
if (!File.Exists(XML_SETTINGS_PATH))
throw new XMLFileNotFoundException();
using (var fs = File.OpenRead(XML_SETTINGS_PATH))
{
RootXElement = XElement.Load(fs);
}
}
}
मुझे यकीन है कि नहीं कर रहा हूँ, लेकिन मुझे लगता है कि एक StreamReader यहां जाने का रास्ता नहीं होगा, यह होगा?
क्या सेटिंग्स रीडर निर्भरता इंजेक्शन का उपयोग करने के लिए डिज़ाइन किया गया है? डीआई और मॉकिंग के लिए एक अच्छा मामला लगता है। –
एमएसटीएस्ट के लिए [परिनियोजन इटिम] है। शायद NNnit ऐसा कुछ है? –