Visual studio VisualStudio测试项目能否处理事件和委托?

Visual studio VisualStudio测试项目能否处理事件和委托?,visual-studio,events,testing,Visual Studio,Events,Testing,我正在为一个大型C#项目开发新功能,该项目主要是遗留代码。 我正在处理的区域处理XML模式消息,为它们的传输创建一个时间表,并将它们放入一些遗留计时器代码中,该代码会通知我何时应该发送它们 尽管我是新手,但事实证明VisualStudio测试项目非常有用,因为我可以测试代码,而无需尝试启动并运行整个系统(在测试硬件上可能需要30分钟!) 我已经静态地测试了我的事件处理代码,但现在想动态地测试。 这可能吗?如果是这样,我如何让测试项目等待事件而不超时?如果我理解正确,您可以使用等待句柄来通知事件,

我正在为一个大型C#项目开发新功能,该项目主要是遗留代码。 我正在处理的区域处理XML模式消息,为它们的传输创建一个时间表,并将它们放入一些遗留计时器代码中,该代码会通知我何时应该发送它们

尽管我是新手,但事实证明VisualStudio测试项目非常有用,因为我可以测试代码,而无需尝试启动并运行整个系统(在测试硬件上可能需要30分钟!)

我已经静态地测试了我的事件处理代码,但现在想动态地测试。
这可能吗?如果是这样,我如何让测试项目等待事件而不超时?

如果我理解正确,您可以使用等待句柄来通知事件,并让测试项目等待事件句柄被通知

void Foo()
{
   var eventSource = ...;
   var waitHandle = new ManualResetEvent(false);
   eventSource.SomeEvent += (sender, e) => waitHandle.Set();

   ...

   // Wait for the event to be fired.
   waitHandle.WaitOne();
}

我明白你的意思了。我可以看到捕获由遗留计时器触发的实际事件很有用,但我不确定它是否允许我在测试代码中测试事件处理程序。今天,我将在此基础上努力了解一些情况。谢谢。如果您想检查事件处理程序是否按预期工作,您可能必须伪造它:要么通过反射调用事件处理程序,要么使用模拟对象人工引发事件。因为这是遗留代码,所以可以使用TypeMock.NET模拟事件源并人工引发事件。