अपनी टीम पर है कि एमएस टेस्ट ढांचे का उपयोग कर में लॉक हो गया है की तरह, हम एक तकनीक है कि बेनामी पर केवल निर्भर करता है विकसित परीक्षण डेटा की सरणी रखने के लिए प्रकार, और LINQ से प्रत्येक पंक्ति का परीक्षण और परीक्षण करें। इसके लिए कोई अतिरिक्त कक्षा या ढांचे की आवश्यकता नहीं है, और पढ़ने और समझने के लिए काफी आसान हो जाता है। बाह्य फ़ाइलों या कनेक्टेड डेटाबेस का उपयोग कर डेटा-संचालित परीक्षणों से लागू करना भी बहुत आसान है।
public static class Extensions
{
/// <summary>
/// Get the Qtr with optional offset to add or subtract quarters
/// </summary>
public static int GetQuarterNumber(this DateTime parmDate, int offset = 0)
{
return (int)Math.Ceiling(parmDate.AddMonths(offset * 3).Month/3m);
}
}
आप इस्तेमाल कर सकते हैं और बेनामी LINQ के लिए संयुक्त प्रकार की सरणी इस तरह एक परीक्षण लिखने के लिए:
उदाहरण के लिए, अगर आप इस तरह एक विस्तार विधि है कहना
[TestMethod]
public void MonthReturnsProperQuarterWithOffset()
{
// Arrange
var values = new[] {
new { inputDate = new DateTime(2013, 1, 1), offset = 1, expectedQuarter = 2},
new { inputDate = new DateTime(2013, 1, 1), offset = -1, expectedQuarter = 4},
new { inputDate = new DateTime(2013, 4, 1), offset = 1, expectedQuarter = 3},
new { inputDate = new DateTime(2013, 4, 1), offset = -1, expectedQuarter = 1},
new { inputDate = new DateTime(2013, 7, 1), offset = 1, expectedQuarter = 4},
new { inputDate = new DateTime(2013, 7, 1), offset = -1, expectedQuarter = 2},
new { inputDate = new DateTime(2013, 10, 1), offset = 1, expectedQuarter = 1},
new { inputDate = new DateTime(2013, 10, 1), offset = -1, expectedQuarter = 3}
// Could add as many rows as you want, or extract to a private method that
// builds the array of data
};
values.ToList().ForEach(val =>
{
// Act
int actualQuarter = val.inputDate.GetQuarterNumber(val.offset);
// Assert
Assert.AreEqual(val.expectedQuarter, actualQuarter,
"Failed for inputDate={0}, offset={1} and expectedQuarter={2}.", val.inputDate, val.offset, val.expectedQuarter);
});
}
}
का उपयोग करते समय यह तकनीक एक स्वरूपित संदेश का उपयोग करने में मददगार है जिसमें आर्ट में इनपुट डेटा शामिल है ताकि यह पहचानने में सहायता मिल सके कि कौन सी पंक्ति परीक्षण विफल हो जाती है।
मैंने AgileCoder.net पर अधिक पृष्ठभूमि और विस्तार के साथ इस समाधान के बारे में ब्लॉग किया है।
अफसोस की बात है, DaTest केवल VS2008 के साथ काम करता प्रतीत होता है। –
http://code.google.com/p/datest/wiki/DaTest –
संभावित डुप्लिकेट [MSTest में एकाधिक पैरामीटर के साथ एक परीक्षण विधि कैसे चलाएं?] (Http://stackoverflow.com/questions/9021881/how -to-run-a-test-method-with-multiple-पैरामीटर-इन-एमस्टेस्ट) – Rob