如何对每个WCF超时设置的效果进行单元测试?我想确保选择好的值,并且还要确保我的异常处理代码是可靠的。
我创建了客户端程序和服务器WCF服务来测试超时设置。在我的服务实现中,我添加了一个Thread.Sleep(5000)。在客户端,导致超时发生的唯一设置是sendTimeout。
无论我在所有其他设置中使用哪个值,都不会发生超时。 如何测试所有其他设置?
以下是我要测试的设置:sendTimeout,receiveTimeout,closeTimeout, openTimeout和inactivityTimeout(在reliableSessions中)。
编辑2009年2月19日:此编辑只是为了表明我还没有找到一种方法来对WCF超时设置进行单元测试。
答案 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)
{
}
我希望这能为你提供一些价值。