krr*_*hna 5 c# unit-testing mstest microsoft-fakes
我有以下TestMethod我正在测试VS 2013,我正在使用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);
}
Run Code Online (Sandbox Code Playgroud)
对于上面的TestMethod如果我必须使用Stub,它应该如何修改,这将是一个很好的做法使用存根而不是XMLDocument?
我试过这个,但不确定这是否足够.
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);
Run Code Online (Sandbox Code Playgroud)
我想可以使用 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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |