क्या एमएसयूनीट में वर्टिंग का एक एमएसटेस्ट समतुल्य है?mstest में assert.warning के बराबर?
उत्तर
निकटतम मैच Assert.Inconclusive()
है - यह परीक्षण परीक्षण विफल नहीं करता है, लेकिन यह भी सफल नहीं होता है। यह अनन्य नामक तीसरे चरण में पड़ता है।
एक एकल अनन्य परीक्षण एक संपूर्ण परीक्षण सूट अनिश्चित होने का कारण बनता है।
रूप में अच्छी तरह कस्टम संदेशों का समर्थन करने भार के होते हैं:
Assert.Inconclusive("Ploeh");
कष्टप्रद, एक अनिवार्य परीक्षण MSTEST.EXE को एक ही स्थिति कोड (1) को असफल होने के कारण पर्याप्त करने के लिए पर्याप्त है, इसलिए यदि आप इसे बंद करने के लिए बैच फ़ाइल का उपयोग कर रहे हैं तो आप अंतर नहीं बता पाएंगे बिना काम के। –
मैं एक ऐसी ही समस्या आ रही है के रूप में मैं कुछ परियोजनाओं के लिए NUnit का उपयोग करें।
Console.Write("Some Warning");
जोर दें। अनन्य(); वास्तव में NUnit द्वारा समर्थित है। http://www.nunit.org/index.php?p=utilityAsserts&r=2.5.8 –
यहाँ है उपयोग करने का प्रयास मेरी हैक कैसे nunit (मुझे पता है इस सवाल के बारे MSTest था, लेकिन यह भी काम करना चाहिए) के साथ चेतावनियां होती है पर। हमेशा की तरह, मुझे किसी भी सुधार में रूचि है। यह विधि मेरे लिए काम कर रही है।
पृष्ठभूमि: मेरे पास कोड है जो परीक्षणों को सही टिप्पणियों के लिए जांचता है और यह पता लगाने के लिए तर्क है कि किसी ने टिप्पणी बदलने के बिना किसी अन्य परीक्षण की प्रतिलिपि बनाई है और चिपकाया है या नहीं। ये चेतावनियां मैं सामान्य Assert के बिना डेवलपर को दिखाना चाहता हूं। वास्तविक परीक्षण को चलने से वास्तविक परीक्षण अवरुद्ध करना शामिल है। कुछ परीक्षण पर ध्यान केंद्रित कर रहे हैं और सफाई रिफैक्टरिंग चरण चेतावनियों को हटाने के लिए है।
मिशन: अन्य सभी आवेषण चलाने के बाद चेतावनियां होने के लिए। इसका मतलब है कि आर्टर्ट के बाद चेतावनियां भी दिख रही हैं। सामान्य रूप से विकास के दौरान परीक्षणों में होने वाली विफलता।
कार्यान्वयन: (सबसे अच्छा सभी परीक्षण फ़ाइलों के लिए एक आधार वर्ग बनाने के लिए):
public class BaseTestClass
{
public static StringBuilder Warnings;
[SetUp]
public virtual void Test_SetUp()
{
Warnings = new StringBuilder();
}
[TearDown]
public virtual void Test_TearDown()
{
if (Warnings.Length > 0)
{
string warningMessage = Warnings.ToString();
//-- cleared if there is more than one test running in the session
Warnings = new StringBuilder();
if (TestContext.CurrentContext.Result.Status == TestStatus.Failed)
{
Assert.Fail(warningMessage);
}
else
{
Assert.Inconclusive(warningMessage);
}
}
}
परीक्षण प्रयोग
[Test]
public void Sample_Test()
{
if (condition) Warning.AppendLine("Developer warning");
Assert.Fail("This Test Failed!");
}
वास्तविक परिणाम:
"This Test Failed!"
"Developer warning"
परीक्षण की स्थिति असफल रही है - लाल
यदि परीक्षण पास हो गया और एक चेतावनी थी, तो आपको अनन्य - येलो की स्थिति मिल जाएगी।
आप एक कस्टम अपवाद का उपयोग करना चाह सकते हैं।
Assert के साथ समस्या। अनन्य यह है कि टेस्ट एक्सप्लोरर का कहना है कि परीक्षण भी नहीं चला था। यह भ्रामक हो सकता है जब भविष्य में परीक्षण चल रहा है, खासकर अगर परीक्षण अन्य डेवलपर्स द्वारा चलाया जाता है:
तरह से मैं पसंद करते हैं पर आए हैं इस प्रकार है। सबसे पहले, एक कस्टम UnitTestWarningException
परिभाषित करें। मैंने अपना अतिरिक्त कन्स्ट्रक्टर दिया है, इसलिए मैं अपना चेतावनी संदेश स्ट्रिंग पास कर सकता हूं।तर्क के साथ स्वरूप शैली:
public class UnitTestWarningException : Exception
{
public UnitTestWarningException(string Message) : base(Message) { }
public UnitTestWarningException(string Format, params object[] Args) : base(string.Format(Format, Args)) { }
}
फिर, बिंदु जहाँ आप एक चेतावनी के साथ एक इकाई परीक्षण समाप्त करना चाहते हैं पर, फेंक एक UnitTestWarningException
बजाय:
[TestMethod]
public void TestMethod1()
{
.
.
.
try
{
WorkflowInvoker.Invoke(workflow1, inputDictionary);
}
catch (SqlException ex)
{
if (ex.Errors.Count > 0
&& ex.Errors[0].Procedure == "proc_AVAILABLEPLACEMENTNOTIFICATIONInsert")
{
//Likely to occur if we try to repeat an insert during development/debugging.
//Probably not interested--the mail has already been sent if we got as far as that proc.
throw new UnitTestWarningException("Note: after sending the mail, proc_AVAILABLEPLACEMENTNOTIFICATIONInsert threw an exception. This may be expected depending on test conditions. The exception was: {0}", ex.Message);
}
}
}
परिणाम: टेस्ट एक्सप्लोरर तो पता चलता है कि
- 1. InternalsVisible MSTest
- 2. MSTest विधानसभा
- 3. MSTest इकाई परीक्षण श्रेणियों
- 4. Mercurial/Kiln + MSBuild + MSTest
- 5. MSTest और AppDomains
- 6. MSTest VS2010 - विभिन्न मशीनों
- 7. वैश्विक परीक्षण MSTest
- 8. MSTest: कैसे परीक्षण समय
- 9. MSTest + CHESS 2010
- 10. परीक्षणों में MsTest परिनियोजन Item आउटपुट डायरेक्टरी
- 11. कितना तेजी से NUnit MSTest
- 12. संकलन/निर्माण के बिना mstest में परीक्षण परीक्षण
- 13. ओएसएक्स के बराबर बराबर?
- 14. एक भी परीक्षण का मामला MSTest
- 15. विंडोज़ में ./configure के बराबर?
- 16. शक्तियों में su के बराबर
- 17. स्कैन में "स्पर्श" के बराबर?
- 18. क्या सी ++ में जावा बराबर विधि के बराबर है?
- 19. क्या Python में बराबर बराबर है?
- 20. apache mod_rewrite node.js के बराबर बराबर है?
- 21. योजना के बराबर अनपॅकिंग के बराबर क्या है?
- 22. क्या जावास्क्रिप्ट के लागू() के बराबर बराबर है?
- 23. विजुअल स्टूडियो/mstest परीक्षण परियोजनाओं की पहचान कैसे करता है?
- 24. कई mstest trx फ़ाइलों को एक एकल trx फ़ाइल
- 25. आर में कॉक्समे के बराबर सर्विफ?
- 26. java.util.Arrays में बराबर() के रनटाइम क्या है?
- 27. एमवीएन निर्भरता के बराबर: Grails में पेड़
- 28. एक्सकोड में "लिस्टबॉक्स" के बराबर है?
- 29. .NET में सॉफ़्ट रेफरेंस के बराबर है?
- 30. CoreFoundation में NSHomeDirectory() के बराबर क्या है?
अच्छा प्रश्न: परीक्षण के बाद मार दिया गया है, लेकिन एक
UnitTestWarningException
के साथ विफल है कि आपके चेतावनी दिखाता है। एमएसएफटी ने मौजूदा यूनिट परीक्षण मानकों को त्यागने का फैसला किया और बदले में कुछ बदमाश के साथ आया। –