2015-05-21 13 views
5

Tôi có dưới đây TestMethod Tôi đang thử nghiệm với VS 2013 và tôi đang sử dụng Microsoft Fakes.Cách phân tích XMLDocument trong VS 2013 bằng Microsoft Fakes

[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);    
} 

Đối với trên TestMethod Nếu tôi phải sử dụng Stub, làm thế nào nó nên được modfied và đó sẽ là một thực hành tốt để sử dụng stub thay vì XMLDocument?

Tôi đã thử điều này nhưng không chắc chắn nếu điều này là đủ hay không.

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

Có vẻ như lớp học của bạn đang được kiểm tra (CMATracer) sử dụng XmlAttributeCollection để bạn bị nhạo nhầm. xin vui lòng thêm việc thực hiện C'tor của CMATracer. –

Trả lời

0

tôi tưởng tượng nó có thể sử dụng Microsoft Fakes để còn sơ khai XmlDocument, nhưng stubbing sẽ kết thúc kết quả là một thử nghiệm rất giòn mà phá vỡ bất cứ khi nào bạn thay đổi các cuộc gọi phương pháp được sử dụng trong việc thực hiện cơ bản.

Đề xuất của tôi là kiểm tra trạng thái trước và sau cho xml của bạn. Bằng cách này không có vấn đề gì thay đổi trong mã CMATracer của bạn, các bài kiểm tra của bạn sẽ vẫn vượt qua.

[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); 
    } 
Các vấn đề liên quan