मैं सोच रहा था कि परीक्षण करने के लिए ऑब्जेक्ट एक फ़ील्ड होना चाहिए और इस प्रकार SetUp
विधि (यानी जुनीट, एनयूनीट, एमएस टेस्ट, ...) के दौरान स्थापित किया जाना चाहिए।सेटअप में या परीक्षण विधि के दौरान परीक्षण करने के लिए ऑब्जेक्ट प्रारंभ करें?
पर विचार करें निम्न उदाहरण (यह MSTest साथ C♯ है, लेकिन यह विचार किसी भी अन्य भाषा और परीक्षण ढांचे के लिए समान होना चाहिए):, पहला उदाहरण
public class SomeStuff
{
public string Value { get; private set; }
public SomeStuff(string value)
{
this.Value = value;
}
}
[TestClass]
public class SomeStuffTestWithSetUp
{
private string value;
private SomeStuff someStuff;
[TestInitialize]
public void MyTestInitialize()
{
this.value = Guid.NewGuid().ToString();
this.someStuff = new SomeStuff(this.value);
}
[TestCleanup]
public void MyTestCleanup()
{
this.someStuff = null;
this.value = string.Empty;
}
[TestMethod]
public void TestGetValue()
{
Assert.AreEqual(this.value, this.someStuff.Value);
}
}
[TestClass]
public class SomeStuffTestWithoutSetup
{
[TestMethod]
public void TestGetValue()
{
string value = Guid.NewGuid().ToString();
SomeStuff someStuff = new SomeStuff(value);
Assert.AreEqual(value, someStuff.Value);
}
}
बेशक
, सिर्फ एक परीक्षण विधि के साथ बहुत लंबा है, लेकिन अधिक परीक्षण विधियों के साथ, यह कुछ अनावश्यक कोड सुरक्षित हो सकता है।
प्रत्येक दृष्टिकोण के पेशेवर और विपक्ष क्या हैं? क्या कोई "सर्वोत्तम व्यवहार" है?
हाँ, परीक्षण की उस शैली में स्विच करने से वास्तव में मदद मिलती है कि सामान कहां जाता है। असल में, यूनिट टेस्ट कोड के समान नियम का पालन करते हैं: यानी एकल उत्तरदायित्व। एक scenerio के लिए एक परीक्षण। –