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