क्या आप वाकई वाकई परीक्षण परिणामों को फेंकना चाहते हैं?
कहें कि किसी के पास एक बुरा दिन है और आपके कोड में कई बग ए, बी और सी प्रस्तुत करता है। आप केवल सोमवार को ए के बारे में पता लगा सकते हैं, इसलिए आप इसे ठीक कर सकते हैं, और आप मंगलवार तक समस्या बी के बारे में नहीं जानते हैं, और फिर आप बुधवार तक सी को ठीक नहीं करते हैं। लेकिन चूंकि आप आधा हफ्ते तक परीक्षण कवरेज खो रहे थे, इसलिए सोमवार को पेश की जाने वाली बग्स पेश नहीं होने के कुछ दिन बाद तक नहीं खोजी गईं, और यह अधिक महंगा है और उन्हें ठीक करने में अधिक समय लगता है।
यदि विफलता के बाद परीक्षण चलाने के लिए आपको बहुत अधिक लागत नहीं है, तो क्या वह जानकारी उपयोगी नहीं है?
यह कहा गया है कि, आपके परीक्षण पुस्तकालयों में एक फिक्स एक साथ हैक करना मुश्किल नहीं होगा। परीक्षण विफलता के सभी संभव codepaths एक विफलता के बाद प्रत्येक परीक्षा को रोकने के लिए एक स्थिर चर StopAssert.Failed = true;
(शायद Assert
के लिए कॉल लपेटकर और AssertFailedExceptions
पकड़ने द्वारा। तो बस जोड़ने [TestInitialize()]
प्रत्येक परीक्षा वर्ग के लिए तरीकों की स्थापना की है!
public class StopAssert
{
public static bool Failed { get; private set; }
public static void AreEqual<T>(T expected, T actual)
{
try
{
Assert.AreEqual(expected, actual);
}
catch
{
Failed = true;
throw;
}
}
// ...skipping lots of methods. I don't think inheritance can make this easy, but reflection might?
public static void IsFalse(bool condition)
{
try
{
Assert.IsFalse(condition);
}
catch
{
Failed = true;
throw;
}
}
}
[TestClass]
public class UnitTest1
{
[TestInitialize()]
public void Initialize()
{
StopAssert.IsFalse(StopAssert.Failed);
}
[TestMethod]
public void TestMethodPasses()
{
StopAssert.AreEqual(2, 1 + 1);
}
[TestMethod]
public void TestMethodFails()
{
StopAssert.AreEqual(0, 1 + 1);
}
[TestMethod]
public void TestMethodPasses2()
{
StopAssert.AreEqual(2, 1 + 1);
}
}
[TestClass]
public class UnitTest2
{
[TestInitialize()]
public void Initialize()
{
StopAssert.IsFalse(StopAssert.Failed);
}
[TestMethod]
public void TestMethodPasses()
{
StopAssert.AreEqual(2, 1 + 1);
}
[TestMethod]
public void TestMethodFails()
{
StopAssert.AreEqual(0, 1 + 1);
}
[TestMethod]
public void TestMethodPasses2()
{
StopAssert.AreEqual(2, 1 + 1);
}
}
स्रोत
2013-12-31 21:33:12
मैं आ रही हैं एक ही मुद्दा। कोई भी? – Zambonilli