2015-05-21 26 views
5

Aşağıda, TestMethod yaşıyorum VS 2013 ile test ediyorum ve Microsoft Fakes kullanıyorum. Yukarıdaki TestMethod i Stub'ı kullanmanız gerekiyorsa İçin Microsoft Fakes kullanılarak XMLDocument'in Microsoft 2013'te Nasıl Kullanılması

[TestMethod]   
public void ConstructorTestForCMAClass() 
{ 
    XmlDocument doc = new XmlDocument(); 
    doc.LoadXml("<add name=\"console\" type=\"System.Diagnostics.DefaultTraceCMA\" value=\"Error\"/>"); 
    XmlAttributeCollection attrColl = doc.DocumentElement.Attributes; 
     CMATracer cMATracer = new CMATracer(attrColl);    
} 

, nasıl modfied edilmeli ve bunun yerine XMLDocument ait saplama kullanmak için iyi bir uygulama olacak?

Bunu denedim ama yeterli olup olmadığından emin değilim.

StubXmlDocument stubXmlDocument = new StubXmlDocument(); 
stubXmlDocument.LoadXml("<add name=\"console\" type=\"System.Diagnostics.DefaultTraceCMA\" value=\"Error\"/>"); 
//create a stub attribute collection 
XmlAttributeCollection attrCollection = stubXmlDocument.DocumentElement.Attributes; 
CMATracer cMATracer = new CMATracer(attrColl); 
+0

Test edilen sınıfınızın (CMATracer) XmlAttributeCollection kullanması nedeniyle yanlış bir şeyle alay ettiniz. Lütfen CMATracer'ın C'tor uygulamasını ekleyin. –

cevap

0

Ben XmlDocument saplama için Microsoft Fakes kullanmak mümkün, ama ağaç sökme temeldeki uygulanmasında kullanılan yöntem çağrıları değiştirdiğinizde kırar çok kırılgan testinde çıkan sona erecek düşünün.

Benim önerim, xml'niz için önce ve sonra durumları kontrol etmek olacaktır. Bu şekilde CMATracer kodunuzda hangi değişiklik olursa olsun, testleriniz hala geçer.

[TestMethod] 
    public void ConstructorTestForCMAClass() 
    { 
     // Arrange 
     string xmlDocPreState = "<add name=\"console\" type=\"System.Diagnostics.DefaultTraceCMA\" value=\"Error\"/>"; 
     string xmlDocPostState = "Whatever..."; 

     XmlDocument doc = new XmlDocument(); 
     doc.LoadXml(xmlDocPreState); 
     XmlAttributeCollection attrColl = doc.DocumentElement.Attributes; 

     // Act 
     CMATracer cMATracer = new CMATracer(attrColl); 

     // Assert 
     Assert.AreEqual(xmlDocPostState, doc.OuterXml); 
    }