首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WCF/SQL Server集成测试太慢?

WCF/SQL Server集成测试太慢?
EN

Stack Overflow用户
提问于 2012-05-29 21:46:05
回答 2查看 307关注 0票数 2

我有一个集成测试,它总是失败(在Visual Studio中),但是,通过查看数据库来验证结果表明这里测试的系统实际上是成功的。

这是测试的基本思想:

代码语言:javascript
复制
private static readonly EfContext db = new EfContext();

[TestMethod]
void Complete_System_Run_Through_Is_Successful()
{
    // Create a new unique message and request...
    var message = Guid.NewGuid().ToString();
    var request = new FooRequest { Message = message };

    var fooClient = null; /* WCF proxy */
    try
    {
        // Call the service...
        fooClient = new FooClient();
        fooClient.CallService(fooRequest);
    }
    finally
    {
        // Close client or Abort faulted client...
        var channel = fooClient as ICommunicationObject;
        try
        {
            if (channel.State != CommunicationState.Faulted)
                channel.Close();
        }
        catch { channel.Abort(); }
    }

    // Verify there are 15 instances (traces) present in the database...
    var actualNumberOfTraces = db.Traces.Count(x => x.Message == message);
    Assert.AreEqual(15, actualNumberOfTraces);
}

正在测试的WCF服务触发了一系列其他下游服务(比如“服务总线”),其中每个侦听服务都会向数据库添加一个条目(跟踪)。从头到尾,这个过程记录了每个完整系统运行的15个这样的跟踪。

验证数据库中的结果表明测试运行成功(数据库中存在所有15个跟踪)。然而,测试运行失败(在Visual Studio中),发现的实际跟踪数在3-6之间。我能想到的唯一一件事是,Assert调用得太早了(即数据库还没有完成更新)。

无论如何,一切都在正常工作,所有的痕迹都确实存在于数据库中,我只是在这个测试中遇到了问题。有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2012-05-29 23:44:07

看起来你有一个异步方法调用。本文描述WCF同步和异步行为。

How to Call WCF Services Synchronously and Asynchronously

票数 0
EN

Stack Overflow用户

发布于 2012-05-30 03:30:41

好吧,目前最糟糕的解决方案是添加一个Thread.Sleep(250),让数据库有时间跟上。如果你能想出一个更优雅的解决方案,我绝对有兴趣听听!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10800450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档