C# 如何使用Microsoft Fakes在VS 2013中存根XMLDocument

C# 如何使用Microsoft Fakes在VS 2013中存根XMLDocument,c#,unit-testing,mstest,microsoft-fakes,C#,Unit Testing,Mstest,Microsoft Fakes,我有下面的TestMethod我正在使用VS2013进行测试,我正在使用Microsoft Fakes [TestMethod] public void ConstructorTestForCMAClass() { XmlDocument doc = new XmlDocument(); doc.LoadXml("<add name=\"console\" type=\"System.Diagnostics.DefaultTraceCMA\" value=\

我有下面的
TestMethod
我正在使用VS2013进行测试,我正在使用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);            
}

我认为可以使用Microsoft Fakes来存根XmlDocument,但是存根将导致非常脆弱的测试,每当您更改底层实现中使用的方法调用时,测试就会中断

我的建议是检查xml的前后状态。这样,无论您的CMATracer代码发生了什么变化,您的测试都将通过

    [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);
    }
[TestMethod]
public void构造函数testforcmaclass()
{
//安排
字符串xmlDocPreState=“”;
字符串xmlDocPostState=“无论什么…”;
XmlDocument doc=新的XmlDocument();
doc.LoadXml(xmlDocPreState);
XmlAttributeCollection attrColl=doc.DocumentElement.Attributes;
//表演
CMATracer CMATracer=新的CMATracer(attrColl);
//断言
AreEqual(xmlDocPostState,doc.OuterXml);
}

您的被测类(CMATracer)似乎使用了XmlAttributeCollection,因此您被嘲笑了错误的东西。请添加CMATracer的C'tor实现。
    [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);
    }