你在使用NUnit测试回调时是否有特殊支持?或者有什么比下面我提供的解决方案更好的“最佳实践”?
我刚开始编写一些测试和方法,所以我仍然有完全的控制权 - 但是我认为如果有更好的方法彻底测试回调,特别是当复杂性增加时,那么这可能会很烦人。因此,以下是我目前正在进行测试的简单示例:
要测试的方法使用委托调用回调函数,例如,当在流中发现新的xml元素时立即调用回调函数。出于测试目的,我将“NewElementCallback”方法传递给委托,并在调用该函数时将参数内容存储在某些测试类的属性中。我使用这些属性来进行断言。(当然,它们在测试设置中被重置)
我刚开始编写一些测试和方法,所以我仍然有完全的控制权 - 但是我认为如果有更好的方法彻底测试回调,特别是当复杂性增加时,那么这可能会很烦人。因此,以下是我目前正在进行测试的简单示例:
要测试的方法使用委托调用回调函数,例如,当在流中发现新的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;
}