如何测试WCF超时设置?

时间:2009-06-11 16:18:28

标签: wcf unit-testing timeout

如何对每个WCF超时设置的效果进行单元测试?我想确保选择好的值,并且还要确保我的异常处理代码是可靠的。

我创建了客户端程序和服务器WCF服务来测试超时设置。在我的服务实现中,我添加了一个Thread.Sleep(5000)。在客户端,导致超时发生的唯一设置是sendTimeout。

无论我在所有其他设置中使用哪个值,都不会发生超时。 如何测试所有其他设置?

以下是我要测试的设置:sendTimeout,receiveTimeout,closeTimeout, openTimeout和inactivityTimeout(在reliableSessions中)。

编辑2009年2月19日:此编辑只是为了表明我还没有找到一种方法来对WCF超时设置进行单元测试。

2 个答案:

答案 0 :(得分:1)

不是一个完整的答案,但下面链接的超时值的解释可能会有所帮助。

http://social.msdn.microsoft.com/forums/en-US/wcf/thread/84551e45-19a2-4d0d-bcc0-516a4041943d/

答案 1 :(得分:1)

如果您在正确的位置查看,您可以获取频道事件并修改测试以了解它们。 Connect是WCF服务上的布尔方法。我使用svcutil使用异步方法生成代理类。

private StateManagerClient _stateManagerClient;
private InstanceContext _site;

public New()
{
    _site = new InstanceContext(this);
    _serviceClient = new ServiceClient();
    _serviceClient.ConnectCompleted += ServiceClient_ConnectCompleted;
}

private void ServiceClient_ConnectCompleted(object sender, ConnectCompletedEventArgs e)
{
    //Bind to the channel events
    foreach (IChannel a in _site.OutgoingChannels) {
        a.Opened += Channel_Opened;
        a.Faulted += Channel_Faulted;
        a.Closing += Channel_Closing;
        a.Closed += Channel_Closed;
    }
}

private void Channel_Opened(object sender, EventArgs e)
{
    
}

private void Channel_Faulted(object sender, EventArgs e)
{
    
}

private void Channel_Closing(object sender, EventArgs e)
{
    
}

private void Channel_Closed(object sender, EventArgs e)
{

}

我希望这能为你提供一些价值。