Ale*_*lex 4 c# delegates nunit unit-testing callback
当您使用 NUnit 测试回调时,是否有任何特殊支持?或者某种比我下面的解决方案更好的“最佳实践”?
我刚刚开始编写一些测试和方法,所以我仍然可以完全控制 - 但是我认为如果有更好的方法来彻底测试回调可能会很烦人,尤其是在复杂性增加的情况下。所以这是我现在如何测试的一个简单示例:
要测试的方法使用一个委托,该委托调用回调函数,例如,一旦在流中发现新的 xml 元素。出于测试目的,我将NewElementCallback
方法传递给委托,并在调用函数时将参数内容存储在某些测试类属性中。我用于断言的这些属性。(当然他们正在测试设置中被重置)
[Test]
public void NewElement()
{
String xmlString = @"<elem></elem>";
this.xml.InputStream = new StringReader(xmlString);
this.xml.NewElement += this.NewElementCallback;
this.xml.Start();
Assert.AreEqual("elem", this.elementName);
Assert.AreEqual(0, this.elementDepth);
}
private void NewElementCallback(string elementName, int elementDepth)
{
this.elementName = elementName;
this.elementDepth = elementDepth;
}
Run Code Online (Sandbox Code Playgroud)
如果您使用 lambda 表达式,则可以避免对私有字段的需要,这就是我通常这样做的方式。
[Test]
public void NewElement()
{
String xmlString = @"<elem></elem>";
string elementName;
int elementDepth;
this.xml.InputStream = new StringReader(xmlString);
this.xml.NewElement += (name,depth) => { elementName = name; elementDepth = depth };
this.xml.Start();
Assert.AreEqual("elem", elementName);
Assert.AreEqual(0, elementDepth);
}
Run Code Online (Sandbox Code Playgroud)
它使您的测试更具凝聚力,并且在任何测试类中拥有字段总是会带来灾难!
归档时间: |
|
查看次数: |
3863 次 |
最近记录: |